BingMaps:住所から緯度経度を取得(GeoCode)
BingMaps:住所から緯度経度を取得(GeoCode)
【GeoCode】
ここでのGeoCodeの解説はBingMapsのコードを解説するための文章です。
Geocodeingとは住所から緯度経度を取得する方法です。
ReverseGeocodeingは逆の緯度経度から住所を割り出す方法です。
今回はGeocodeingのサンプルコードを紹介します。
【今回のサンプルの動作】
テキストボックス「住所」検索できるようにしています。
結果、h1要素にJSONで表示するようにしています。
【HTMLとJavascript2つに分割して紹介】
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>BingMaps GO! : Geocode Example</title>
<style>html,body,#main{height:100%;}body{padding:0;margin:0;background:#333;}h1{padding:0;margin:0;font-size:100%;color:white;}p{margin:0}</style>
</head>
<body>
<!-- MAP[START] -->
<header>
<h1 id="h1">BingMaps GO! (住所検索 → 緯度経度取得)</h1>
<p><input type="text" id="from" value="Seattle"> <button id="get">検索</button></p>
</header>
<div id="main">
<div id="myMap" style='width:100%;height:90%;'></div>
</div>
<!-- MAP[END] -->
JavaScript
・BingMapsControllerを読み込んでいる、最初の外部ファイル読み込みの
[*** Your Map Key ***]の箇所を、自身が取得したBingMapsKeyと変えてください。
<script src='https://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=[*** Your Map Key ***]' async defer></script>
<script>
/**
* BingMapsControllerを読み込んだらGetMap()を実行
* @constructor
*/
let map; //MapObject用
let searchManager; //SearchObject用
function GetMap() {
//Map生成
map = new Microsoft.Maps.Map('#myMap', {
zoom: 15,
mapTypeId: Microsoft.Maps.MapTypeId.aerial
});
//検索モジュール指定
Microsoft.Maps.loadModule('Microsoft.Maps.Search', function () {
//searchManagerインスタンス化(Geocode,ReverseGeocodeが使用可能になる)
searchManager = new Microsoft.Maps.Search.SearchManager(map);
//Geocode:住所から検索
geocodeQuery(document.getElementById("from").value);
});
}
/**
* 検索ボタン[Click:Event]
*/
document.getElementById("get").onclick = function(){
//4.Geocode:住所から検索
geocodeQuery(document.getElementById("from").value);
};
/**
* 住所から緯度経度を取得
* @param query [住所文字列]
*/
function geocodeQuery(query) {
if(searchManager) {
//住所から緯度経度を検索
searchManager.geocode({
where: query, //検索文字列
callback: function (r) { //検索結果を"( r )" の変数で取得
//最初の検索取得結果をMAPに表示
if (r && r.results && r.results.length > 0) {
//Pushpinを立てる
const pin = new Microsoft.Maps.Pushpin(r.results[0].location);
map.entities.push(pin);
//map表示位置を再設定
map.setView({ bounds: r.results[0].bestView});
//取得た緯度経度をh1要素にJSON文字列にして表示
console.log(r.results[0].location);
document.getElementById("h1").innerText = JSON.stringify(r.results[0].location);
}
},
errorCallback: function (e) {
alert("見つかりません");
}
});
}
}
</script>
</body>
</html>
【緯度経度の取得方法】
・ 「//取得た緯度経度をh1要素にJSON文字列にして表示」コメント箇所の以下2行がGeoCodeでの結果である『緯度経度』を取得&表示している箇所です。
・「 r.results[0].location 」をconsole.logで確認することでデータ取得の内容を確認しています。
【サンプルコード】
『 BingMaps Go! ( https://mapapi.org ) 』
のGeocodeカテゴリの『 Geocode( 住所 → 緯度経度 ) 』をご確認ください!
実際の動作を確認することができます。※コードもまるっとあります。
こちらを見てもらうと早いかも。
あれば良いサンプルは随時追加していきます。
※海外からのアクセスと日本では表示しているものが違います。
今後
今後は上記のようなサンプルコードを増やしていきます。
BingMaps GO! を宜しくお願いいたします。(^^)
Author And Source
この問題について(BingMaps:住所から緯度経度を取得(GeoCode)), 我々は、より多くの情報をここで見つけました https://qiita.com/daisu_yamazaki/items/7281736f0a77cf8ab664著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .