2011-10-08 36 views
0

我需要突出顯示兩個交叉點之間的一段街道。我發現了一年多前提出的類似問題(請參閱here),其中Google,Bing等不通過其API提供街道數據。有誰知道API中是否有任何變化,以及我是否可以從某處獲取街道位置緯度/經度數據?可能突出街道的一部分?

回答

0

我已經在API V2中完成了這項工作,但不應該難以將其重寫爲V3。

看一看這個網站http://www.fvs.de/anfahrt.php(德國),然後單擊「WEG在顯示地圖zeigen」按鈕(「在地圖中查看方式」),在地圖下方的部分。每個按鈕突出顯示地圖中的另一條街道線。

它基本上是通過使用Google地圖的方向對象來繪製地圖中任意兩個街點之間的路線(例如您的兩個交點)。這些點必須用它們的LatLng座標進行編碼。這裏是一個代碼示例(如所述,這是API V2):

function initMap() { // called by page onload event 
    if (GBrowserIsCompatible()) { 
    // Display the map, with some controls and set the initial location 
    gMap = new GMap2(document.getElementById("map_canvas")); 
    gMap.addControl(new GLargeMapControl()); 
    // ... 
    gMap.setCenter(GLatLng(49.238326, 6.977761), 15); 

    // init directions object and attach listener to handle route loads from function highliteRoute() 
    gDir = new GDirections(); 
    gPoly = null; 
    GEvent.addListener(gDir, 'load', function(){ 
     gPoly = gDir.getPolyline(); 
     gMap.addOverlay(gPoly); 

     // zoom & pan to poly   
     var polyBds = gPoly.getBounds(); 
     var polyZoom = gMap.getBoundsZoomLevel(polyBds); 
     gMap.setZoom(polyZoom); 
     gMap.panTo(polyBds.getCenter()); 
    }); 
    } 
} 

function highliteRoute(){ 
    if(gPoly!=null) gPoly.hide(); 
    gDir.load('from: 49.313530,6.969109 to: 49.238326,6.977761', {getPolyline:true}); 
} 
+0

很酷。謝謝。我正在考慮從一個路口到另一個路口的步行路線,但不能保證返回使用我想突出顯示的街道的路徑。我想我將不得不使用開放街道地圖數據來查找街道座標。 – akonsu

+0

我也遇到了計算方向並不總是與我想強調的街道相匹配的問題。通過在搜索字符串中添加額外的中間「to:」點,可以很容易地糾正這個問題,即強制結果使用您的街道: 'gDir.load('from:49.313530,6.969109 to:49.282163,7.010651 to :49.238326,6.977761',{getPolyline:true});' – Jpsy

+0

哦,並找到街道座標:使用Google Maps Labs中的「LatLng Marker」: 打開Goog​​le Maps,點擊右上角的小圖標並選擇「地圖實驗室」。向下滾動到「LatLng標記」並啓用它並保存。回到地圖上,右鍵點擊您想要查找座標的任何位置,然後從上下文菜單中選擇「Drop LatLng Marker」。您甚至可以從出現的標記中複製座標值:通過快速點擊三次來標記座標文本,複製,粘貼。 – Jpsy