2011-01-13 4 views
3

사용자가 Google지도에서 폴리 라인이있는 경로를 그려야합니다. 폴리 라인을 스냅하는 방법을 찾았습니다 (링크의 예, 코드). 이 코드는 길 찾기 서비스와 함께 도로에서 폴리 라인을 그리는 데 사용되는 유일한 문제는 G_TRAVELMODE_DRIVING에서만 작동하지만 G_TRAVELMODE_WALKING을 (를) 사용하고 WALKING을 (를) 사용하면 길 찾기의 생성자에지도와 div를 제공해야한다는 것입니다. 목적. 그렇게하면 자동으로 마지막 행이 제거되고 현재 행만 표시됩니다. 나는 null로지도를 제공하거나 생성자에서지도를 내보내는 것과 같은 여러 가지 작업을 시도했습니다. 또한 생성자에서 두 번째지도를주고 방향 서비스에서 폴리 라인을 가져 와서 오른쪽에 표시하려고했습니다. 지도. 그러나 아무것도 작동하지 않습니다! 누군가가 나를 도울 수 있으면 고맙겠습니다!Google지도에서 travelmode를 사용하여 폴리 라인을 도로에 스냅하는 방법은 무엇입니까?

http://econym.org.uk/gmap/example_snappath.htm

if (GBrowserIsCompatible()) { 

    var map = new GMap2(document.getElementById("map")); 
    map.setCenter(new GLatLng(53.7877, -2.9832),13) 
    map.addControl(new GLargeMapControl()); 
    map.addControl(new GMapTypeControl()); 
    var dirn = new GDirections(); 

    var firstpoint = true; 
    var gmarkers = []; 
    var gpolys = []; 
    var dist = 0; 


    GEvent.addListener(map, "click", function(overlay,point) { 
    // == When the user clicks on a the map, get directiobns from that point to itself == 
    if (!overlay) { 
     if (firstpoint) { 
     dirn.loadFromWaypoints([point.toUrlValue(6),point.toUrlValue(6)],{getPolyline:true}); 
     } else { 
     dirn.loadFromWaypoints([gmarkers[gmarkers.length-1].getPoint(),point.toUrlValue(6)],{getPolyline:true}); 
     } 
    } 
    }); 

    // == when the load event completes, plot the point on the street == 
    GEvent.addListener(dirn,"load", function() { 
    // snap to last vertex in the polyline 
    var n = dirn.getPolyline().getVertexCount(); 
    var p=dirn.getPolyline().getVertex(n-1); 
    var marker=new GMarker(p); 
    map.addOverlay(marker); 
    // store the details 
    gmarkers.push(marker); 
    if (!firstpoint) { 
     map.addOverlay(dirn.getPolyline()); 
     gpolys.push(dirn.getPolyline()); 
     dist += dirn.getPolyline().Distance(); 
     document.getElementById("distance").innerHTML="Path length: "+(dist/1000).toFixed(2)+" km. "+(dist/1609.344).toFixed(2)+" miles."; 
    } 
    firstpoint = false; 
    }); 

    GEvent.addListener(dirn,"error", function() { 
    GLog.write("Failed: "+dirn.getStatus().code); 
    }); 

} 
else { 
    alert("Sorry, the Google Maps API is not compatible with this browser"); 
} 
+1

* 작동하지 않는 것에 대한 링크를 제공하면 도움이 될 것입니다. 아니면 마이크 윌리엄스 코드가 아닌 코드가 작동하지 않을 수도 있습니다. –

답변

0

나는 그것이 이전 게시물 알고 있지만 대답은 앞으로 오지와 내가 최근 코드 이런 종류의 작업을했습니다 (그리고 작업있어) 이후,이과의 addListener를 교환하려고 .

GEvent.addListener(map, "click", function(overlay,point) { 
    // == When the user clicks on a the map, get directiobns from that point to itself == 
    if (!overlay) { 
     if (firstpoint) { 
     dirn1.loadFromWaypoints([point.toUrlValue(6),point.toUrlValue(6)],{ getPolyline:true,travelMode:G_TRAVEL_MODE_WALKING}); 
     } else { 
     dirn1.loadFromWaypoints([gmarkers[gmarkers.length-1].getPoint(),point.toUrlValue(6)],{ getPolyline:true,travelMode:G_TRAVEL_MODE_WALKING}); 
     } 
    } 
    }); 
관련 문제