2011-12-16 4 views
0

GMap APi v3을 사용합니다. 사용자를위한 경로를 생성하기 위해 길 찾기 서비스를 사용하고 있지만 경로가지도에 렌더링되면 내가 배치 한 대상 정보창이지도처럼 잘립니다. 목표가 아닌 경로를 중심으로합니다. 대신 Google지도 v3 길 찾기를 사용할 때 자른 InfoWindow

  • 는 예를 들어 (자른되지 않도록하는 방식으로 정보창을 보여 경로의,

    1. 자동 정보창에 초점 (또는 센터) :

      어떻게 하나에 GM을 알 수 있습니다 : 왼쪽 하단 대신 정보창의 오른쪽 상단에있는 도구 설명 화살표를 사용하여 경로 대상의 오른쪽 상단에 창을 표시)

  • +0

    난 내지도에 .setCenter()와 .panTo()를 호출 시도를하지만 전혀 작동하지 않습니다 - 난 방향 서비스가 전송 한 후 호출을 시도 응답이지만 여전히 유용한 결과는 없습니다. – SquareCat

    +0

    질문에 추가 할 수있는 몇 가지 샘플 코드가 있습니까? –

    +0

    내 코드가 너무 추상적이어서 방향 서비스를 사용하는 것이 어떤 코드도 요구되지 않는 공통적 인 것이라 생각했습니다. 어쨌든, 나는 해결책을 찾았을지도 모른다. – SquareCat

    답변

    0

    .setCenter()를 사용하여 관리 할 수있었습니다. directionsService 콜백 내에서 (적절한 r을 수신 한 후) 응답). 그러나 이것은 타임 아웃을 사용할 때만 효과가있었습니다. 그것은 가장 순수한 해결책은 아닐지 모르지만, 현재로서는 나와 사용할 수있는 유일한 해결책입니다.

    /* _x & _y are passed as coordinates */ 
    var _latLng=new google.maps.LatLng(_x,_y); 
    directionsService.route(request, function(response, status) { 
        if (status == google.maps.DirectionsStatus.OK) { 
         directionsRenderer.setDirections(response); 
         window.setTimeout(function(){ 
          gmap.setCenter(_lagLng); 
         }, 500); 
        } 
    } 
    

    당신이 너무 일찍) .setCenter를 (호출하는 경우, GMAP은 아직 구축 한 번 수행, 경로를 중심 것 같다 - 따라서() .setCenter에 마지막 명령을 무시 - 그러나, 타임 아웃을 사용하여 이 문제를 해결하기 위해지도가 작성되고 경로가 렌더링 된 후에 호출이 수행됩니다.

    0

    이전 질문이지만 setTimeout이없는 해결책이 있습니다. 당신은 'tilesloaded'이벤트를 사용할 수 있습니다

    var directionsService = new google.maps.DirectionsService(); 
    var directionsDisplay = new google.maps.DirectionsRenderer(); 
    directionsDisplay.setMap(gmap); 
    
    directionsService.route(request, function(result, status) { 
        if (status === 'OK') { 
         directionsDisplay.setDirections(result); 
         var listener = gmap.addListener('tilesloaded', function(){ 
    
          // add your centering code here 
          // or open your infowindow here and maps will auto center like expected 
    
          google.maps.event.removeListener(listener); 
    
         }); 
        }else{ 
         console.warn('Error retreiving directions'); 
        } 
    }); 
    
    관련 문제