【问题标题】:Google Maps API, is it possible to highlight specific streets?Google Maps API,是否可以突出显示特定街道?
【发布时间】:2012-11-09 15:22:03
【问题描述】:

是否可以使用 Google Maps API 突出显示街道?
我能找到的唯一接近这种效果的就是在它们上面画线。 但这是很多工作,而且更不准确。这些线条也会越过地名。

我想要突出显示某些街道名称,就好像您从 a 点导航到 b 点一样。 因此,例如,如果 10 条街道被街道工作人员关闭,我可以突出显示这些街道。

【问题讨论】:

  • 这些例子是 Google Maps API v2,同样的概念也适用于 v3,但它们在街道上画线,这是 OP 不想做的。
  • 哦抱歉不知道我能接受答案。但让我们保持话题。有人知道解决方案吗?我可以想象人们以前遇到过这个问题。但也许这是不可能的。

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


【解决方案1】:

这实际上可以通过使用 Maps API 路线渲染器轻松完成。
您必须提供街道起点和终点的纬度/经度坐标,渲染器会为您完成所有计算和绘制。您无需阅读方向步骤并自己绘制折线!

在此处查看实际操作:
http://jsfiddle.net/HG7SV/15/

这是代码,所有的魔法都在函数initialize()中完成:

<html>
    <head>
        <style type="text/css">
            html { height: 100% }
            body { height: 100%; margin: 0px; padding: 0px }
            #map_canvas { height: 100% }
        </style>
        <script type="text/javascript"
            src="http://maps.google.com/maps/api/js?sensor=false">
        </script>
        <script type="text/javascript">
            function initialize() {
                // init map
                var myOptions = {
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

                // init directions service
                var dirService = new google.maps.DirectionsService();
                var dirRenderer = new google.maps.DirectionsRenderer({suppressMarkers: true});
                dirRenderer.setMap(map);

                // highlight a street
                var request = {
                    origin: "48.1252,11.5407",
                    destination: "48.13376,11.5535",
                    travelMode: google.maps.TravelMode.DRIVING
                };
                dirService.route(request, function(result, status) {
                    if (status == google.maps.DirectionsStatus.OK) {
                        dirRenderer.setDirections(result);
                    }
                });
            }
        </script>
    </head>
    <body onload="initialize()">
        <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>
</html>

如果您的街道是弯曲的,并且渲染器应该找到您不想要的快捷方式,则可以通过添加中间路点来轻松修改,以强制绘制的线精确到您想要的街道:

                var request = {
                    origin: "48.1252,11.5407",
                    destination: "48.13376,11.5535",
                    waypoints: [{location:"48.12449,11.5536"}, {location:"48.12515,11.5569"}],
                    travelMode: google.maps.TravelMode.DRIVING
                };

【讨论】:

  • 感谢您的回答!是否也可以像这样绘制多条路线?如果我在您的 jsFiddle 中绘制第二条路线,第一条路线将消失。
  • 好吧,我发现我必须为我绘制的每条路径添加一个新的 directionService 对象。这是值得建议的吗? Link to a new fiddle.(一些复制粘贴工作可能更好地进行循环)
  • 是否也可以使用特定的街道名称? Google 地图为您提供街道的起点和终点 Lat/Lng。
  • 是的,您可以使用书面地址代替经纬度坐标。请阅读developers.google.com/maps/documentation/directions 的示例(尤其是“请求参数”部分)。如果你能接受我的回答,我会很高兴。我为你工作过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多