11

Google Maps APIで通りを強調表示することは可能ですか?
この効果に近いと私が見つけた唯一のことは、それらの上に線を引くことでした。しかし、これは多くの作業であり、より不正確です。行は地名にも適用されます。

私が欲しいのは、ポイントaからbにナビゲートしているかのように、特定のストリート名を強調表示することです。たとえば、10通りがストリートワーカーによって閉鎖されている場合、それらのストリートを強調表示できます。

4

1 に答える 1

15

これは、MapsAPIの方向レンダラーを使用することで実際に非常に簡単に実行できます。
通りの始点と終点の緯度/経度座標を指定する必要があり、レンダラーがすべての計算とペイントを行います。方向の手順を読んで、自分でポリラインを描く必要はありません。

ここで実際の動作を確認してください: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
                };
于 2012-11-15T10:39:48.353 に答える