地図の中に簡単に線が書けないものか・・・・・。ポリラインの座標をいちいち入力してられないですよね。
ふとGoogle先生のデモを見ていて、エンコード済みポリラインを使う方法があることに気がつきました。これは便利そう。
さて、本題・・・
1.ライブラリ ジオメトリの宣言
<script src=”https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry“></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry"></script>
2.さて、エンコード化されたポリラインを表示させるには
エンコード化ポリラインをgoogle.maps.geometry.encoding.decodePathを使って、new google.maps.Polylineのpath設定に渡してやればOKです(このページを参考にしました)。
なお、下記のvar eccoded_path で指定するエンコード化されたポリライン記述(下記赤文字部)は、コチラの「ポリライン収得」マップで入手下さい。上記グーグル先生のエンコーダよりも使いやすいように少しいじってあります(アイコンの移動、削除に対応)。
また、ポリラインの色、線の透明度、線の幅は、下記青色文字部で指定します。
var encoded_path = 'yb}xEm}zrYryRwXxvLaz]ppE{km@kvSu~_@}jHhhCi|]xhh@r{Sr~j@dbEp|H'; var decoded_path = google.maps.geometry.encoding.decodePath(encoded_path); var polyOptions = { path: decoded_path , strokeColor: "#dc143c" , //線色 strokeOpacity: 1.0 , //透明度0.0-1.0の範囲で指定 strokeWeight: 5 ,//幅(pixel) map: map } polyline = new google.maps.Polyline(polyOptions);
通常の座標で書きたければこんな感じで
var coordination = [new google.maps.LatLng(37.27, -122.21),new google.maps.LatLng(38.48, -123.85)]; var polyOptions = { path: coordination , strokeColor: "#dc143c" , //線色 strokeOpacity: 1.0 , //透明度0.0-1.0 strokeWeight: 5 ,//幅pixel map: map } polyline = new google.maps.Polyline(polyOptions);
3.コピペ用
せっかくですので3種類のポリラインを表示させてみます。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>緯度と経度をエンコード化して、簡単に地図の中に複数の線を書く(ポリライン polyline)</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry"></script> <script type="text/javascript"> var polyline; function initialize() { var myOptions = { zoom: 8, center: new google.maps.LatLng(35.666989,139.708794), mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById('map_canvas'),myOptions); //polyline1 var encoded_path = 'yb}xEm}zrYryRwXxvLaz]ppE{km@kvSu~_@}jHhhCi|]xhh@r{Sr~j@dbEp|H'; var decoded_path = google.maps.geometry.encoding.decodePath(encoded_path); var polyOptions = { path: decoded_path , strokeColor: "#dc143c" , //線色 strokeOpacity: 1.0 , //透明度0.0-1.0 strokeWeight: 5 ,//幅pixel map: map } polyline = new google.maps.Polyline(polyOptions); //polyline2 var encoded_path2 = 'ki{wEohdrYvs`@kdaB{dHmtm@smjA}xeAazg@v}q@i|OroaAfaEpdkAjk]~kb@laj@h}L'; var decoded_path2 = google.maps.geometry.encoding.decodePath(encoded_path2); var polyOptions2 = { path: decoded_path2 , strokeColor: "#6090ef" , //線色 strokeOpacity: 0.3 , //透明度0.0-1.0 strokeWeight: 20 , //幅pixel map: map } polyline = new google.maps.Polyline(polyOptions2); //polyline3 var encoded_path3 = '{yy{EqvcoYjlvC~lEotaDijp@v`xCh}LecqCswg@|ccCjoFzyb@_fBxkXzflAftOgppAblJfbjAduO{flA|hKpvdA'; var decoded_path3 = google.maps.geometry.encoding.decodePath(encoded_path3); var polyOptions3 = { path: decoded_path3 , strokeColor: "#ff00ff" , //線色 strokeOpacity: 0.7 , //透明度0.0-1.0 strokeWeight: 10 ,//幅pixel map: map } polyline = new google.maps.Polyline(polyOptions3); polyline.setMap(map); } window.onload = initialize; </script> </head> <body> <div id="map_canvas" style="width : 700px;height : 500px;"></div> </body> </html>
4.完成サンプルデモ
◆Google Maps JavaScript API V3 デベロッパーガイド
◆Google Maps JavaScript API V3
関連記事一覧
スポンサードリンク
3 Comments.