Bingmapsで移動ルートを記録、描画 #1
Bingmapsで移動ルートを記録、描画 #1:
最近やたらBingMapsを多用したので折角なのでまとめてみます。
以下成果物を作成する過程を4回に分けて共有します。
Geolocation APIとBingmaps APIを組み合わせて、自分が走ったルートを記録し、地図に描画するプログラム
1.GeoLocation APIで現在地の座標を取得、現在地の地図を描画←今回はこちら
2.Bingmaps APIのDirection Moduleを使ってルート検索機能を実装
3.GeoLocation APIを使用し、移動ルートを記録
4.記録したルートをBingmapsAPIに渡し、地図上に描画
第一段階としてGeolocation APIへリクエストし、自身の現在地座標を取得後、Bingmaps APIへ座標情報を元に現在地の地図を描画してもらいます。
上記Key#についてはBingmapsアカウントを作成し取得してください。
こちらの記事で紹介されている手順で取得出来ます↓
https://qiita.com/ShingoOikawa/items/4ffb4bec13b352d0ff90
geolocation APIの getCurrentPositionメソッドの成功時に実行される関数mapsInitにてBingmaps APIへ描画する地図の中心座標(現在地)を渡し描画してもらいます。
その際にBingmapsのPushpinメソッドにて中心地(現在地)にピンを表示してもらっています。
次回はBingmaps APIで準備されているDirection Moduleを使い、この地図にルート検索の機能を追加します。
最近やたらBingMapsを多用したので折角なのでまとめてみます。
以下成果物を作成する過程を4回に分けて共有します。
成果物
Geolocation APIとBingmaps APIを組み合わせて、自分が走ったルートを記録し、地図に描画するプログラム
実装の流れ
1.GeoLocation APIで現在地の座標を取得、現在地の地図を描画←今回はこちら2.Bingmaps APIのDirection Moduleを使ってルート検索機能を実装
3.GeoLocation APIを使用し、移動ルートを記録
4.記録したルートをBingmapsAPIに渡し、地図上に描画
手順1:現在地座標の取得と地図を描画
第一段階としてGeolocation APIへリクエストし、自身の現在地座標を取得後、Bingmaps APIへ座標情報を元に現在地の地図を描画してもらいます。sample.html
<body>
<h1>BingMaps TEST</h1>
<div id="myMap"></div>
</body>
//------bingmaps起動--------------
<script src='https://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=[自身のKey#]' async defer></script>
<script src='sample.js'></script>
こちらの記事で紹介されている手順で取得出来ます↓
https://qiita.com/ShingoOikawa/items/4ffb4bec13b352d0ff90
sample.js
//---------現在位置が取得成功時に実行する関数--------
let map;
function mapsInit(position) {
const lat = position.coords.latitude;
const lon = position.coords.longitude;
map = new Microsoft.Maps.Map('#myMap', {
center: new Microsoft.Maps.Location(lat, lon),
mapTypeId: Microsoft.Maps.MapTypeId.load,
zoom: 15
});
pushpin(lat,lon,map);
}
//-----現在地にピンを描画--------------
function pushpin(la,lo,now){
let location = new Microsoft.Maps.Location(la,lo)
let pin = new Microsoft.Maps.Pushpin(location, {
color: 'red',
draggable:false,
enableClickedStyle:true,
enableHoverStyle:true,
visible:true
});
now.entities.push(pin);
};
//---------現在位置が取得失敗時に実行する関数--------
function mapsError(error) {
let e = "";
if (error.code == 1) {
e = "位置情報が許可されてません";
}
if (error.code == 2) {
e = "現在位置を特定できません";
}
if (error.code == 3) {
e = "位置情報を取得する前にタイムアウトになりました";
}
alert("エラー:" + e);
};
//-----------------現在地取得と地図描画-----------
function GetMap() {
navigator.geolocation.getCurrentPosition(mapsInit, mapsError);
}
その際にBingmapsのPushpinメソッドにて中心地(現在地)にピンを表示してもらっています。
次回はBingmaps APIで準備されているDirection Moduleを使い、この地図にルート検索の機能を追加します。
コメント
コメントを投稿