【问题标题】:possible to highlight a section of a street?可以突出街道的一部分吗?
【发布时间】:2011-10-08 19:15:00
【问题描述】:

我需要突出显示两个十字路口之间的一段街道。我发现了一个一年多前提出的类似问题(请参阅here),它说 Google、Bing 等不通过其 API 提供街道数据。有谁知道 API 中是否有任何变化,以及我现在是否可以从某个地方获取街道位置纬度/经度数据?

【问题讨论】:

    标签: google-maps google-maps-api-3 bing-maps


    【解决方案1】:

    我已经在 API V2 中做到了这一点,但是为 V3 重写它应该不难。

    查看此网站http://www.fvs.de/anfahrt.php(德语),然后单击地图下方部分中的“Weg in Karte zeigen” 按钮(“在地图中显示方式”)。每个按钮突出显示地图中的另一条街道线。

    这基本上是通过使用谷歌地图的方向对象来绘制地图中两个任意街道点之间的路线(例如,您的两个十字路口)。这些点必须使用它们的 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});
    }
    

    【讨论】:

    • 酷。谢谢。我正在考虑获取从一个十字路口到另一个十字路口的步行路线,但不能保证返回使用我要突出显示的街道的路径。我想我将不得不使用 Open Street Maps 数据来查找街道坐标。
    • 我还遇到了计算出的方向并不总是与我想要突出显示的街道相匹配的问题。这可以通过在搜索字符串中添加额外的中间“to:”点来轻松纠正,这会强制结果使用您的街道:gDir.load('from: 49.313530,6.969109 to: 49.282163,7.010651 to: 49.238326,6.977761', {getPolyline:true});
    • 哦,要查找街道坐标:使用 Google Maps Labs 中的“LatLng Marker”:打开 Google Maps,单击右上角的小齿轮图标并选择“Maps Labs”。向下滚动到“LatLng Marker”并启用它并保存。返回地图,右键单击要查找坐标的任何位置,然后从上下文菜单中选择“Drop LatLng Marker”。您甚至可以从出现的标记中复制坐标值:通过快速单击坐标文本 3 次、复制、粘贴来标记坐标文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多