Bing Maps APIを簡単に使う関数をサクッと作ってみた
Bing Maps APIを簡単に使う関数をサクッと作ってみた:
そもそも普通のプログラマはMapのドキュメントとサンプルで苦戦する
簡単に使いたいMap用のjqueryのようなライブラリがほしい・・・そこまで時間が使えない。
サクッと関数を作れば簡単に使えるのではと思い軽はずみな気持ちで作成しました。
サンプルサイト「BingMapsGo!」の『Getting Started!!』 にてスタートに必要な知識を得て『KEY取得方法&DIVタグやJS読み込み』に関して準備してから以下を始めるとGoodです。
*JavaScriptの基礎知識がある人
(個人的によく使う4つの処理を関数化: 初期表示・表示変更・Pushpin・Infobox )
※ 関数にはNull・型チェックは入れてません。
上記の4つの関数定義を読み込んでいれば以下の例を実行できます。
できるだけ1行で一つの指示を完了させたいため、引数が多いものもありますが、
サクッと自分のアプリケーションでの仕様理解であれば軽く使えそうです。
※NullCheck・TypeCheck等は時間の都合上後回しにしてます。
BingMapsを使いやすくするライブラリなどでてくれればありがたいですね。
自分で作ればいいのかも・・・Githubに基本形上げて、Openにやれば数名でできそうですね。
プログラミング初心者にはこういう関数化すると便利なことを知ってほしいですね。
作業も捗りますね。
もう少し時間をかけて、汎用的なものを今度は作ってみたいと思います。
【BingMaps用関数をサクッと作ってみた。】
経緯
そもそも普通のプログラマはMapのドキュメントとサンプルで苦戦する簡単に使いたいMap用のjqueryのようなライブラリがほしい・・・そこまで時間が使えない。
サクッと関数を作れば簡単に使えるのではと思い軽はずみな気持ちで作成しました。
前提条件
サンプルサイト「BingMapsGo!」の『Getting Started!!』 にてスタートに必要な知識を得て『KEY取得方法&DIVタグやJS読み込み』に関して準備してから以下を始めるとGoodです。*JavaScriptの基礎知識がある人
4つの関数:使い方
//Map表示 map = mapStart("divの#id", 緯度, 経度, "地図タイプ", zoom値); //pushpin追加 mapPushpin(map, 緯度 , 経度, "カラー", ドラッグ, click, hover, 表示); //Infobox追加 mapInfobox(map, 緯度 , 経度, "タイトル", "説明"); //Mapを再表示(値を変更して再表示) mapChangeView(map, 緯度 , 経度, "地図タイプ", zoom値);
4つの関数:定義
(個人的によく使う4つの処理を関数化: 初期表示・表示変更・Pushpin・Infobox )※ 関数にはNull・型チェックは入れてません。
bingMaps_funcs.js
//************************************************************************************ // BingMaps Functions //************************************************************************************ "use strict"; /** * MapView * @method mapView * @param target (string) ["#id"] * @param lat (float) [47.6149] * @param lon (float) [-122.1941] * @param id (string) ["load","aerial","canvasDark","canvasLight","birdseye","grayscale","streetside"] * @param num (int) [1...20] * @returns {boolean=false} OR {Object=Map} */ function mapStart(target, lat, lon, id, num){ //MapObject return new Microsoft.Maps.Map(target, { center: new Microsoft.Maps.Location(lat,lon), //Location center position mapTypeId: eval("Microsoft.Maps.MapTypeId."+id), //Type: [load, aerial,canvasDark,canvasLight,birdseye,grayscale,streetside] zoom: num //Zoom:1=zoomOut, 20=zoomUp[ 1~20 ] }); } /** * MapViewMove * @method mapChangeView * @param map (object) [mapObject] * @param lat (float) [47.6149] * @param lon (float) [-122.1941] * @param id (string) ["load","aerial","canvasDark","canvasLight","birdseye","grayscale","streetside"] * @param num (int) [1...20] */ function mapChangeView(map, lat, lon, id, num){ //MapObject const loc = new Microsoft.Maps.Location(lat,lon); map.setView({ mapTypeId: eval("Microsoft.Maps.MapTypeId."+id), center: loc, zoom: num, bounds:loc.bestView }); } /** * Pushpin:Add * @method mapPushpin * @param map (object) [mapObject] * @param lat (float) [47.6149] * @param lon (float) [-122.1941] * @param color (string) ["#ff0000"] * @param drag (boolean) [true] * @param clicked (boolean) [true] * @param hover (boolean) [true] * @param visib (boolean) [true] */ function mapPushpin(map, lat, lon, color, drag, clicked, hover, visib){ const location = new Microsoft.Maps.Location(lat,lon); const pin = new Microsoft.Maps.Pushpin(location, { color: color, //Color draggable:drag, //MouseDraggable enableClickedStyle:clicked, //Click enableHoverStyle:hover, //MouseOver visible:visib //show/hide }); map.entities.push(pin); } /** * Infobox:Add * @method mapInfobox * @param map (object) [mapObject] * @param lat (float) [47.6149] * @param lon (float) [-122.1941] * @param t (string) ["title"] * @param d (string) ["description"] */ function mapInfobox(map, lat, lon, t, d){ //Infobox const location = new Microsoft.Maps.Location(lat,lon); const infobox = new Microsoft.Maps.Infobox(location,{ title: t, description: d }); infobox.setMap(map); //Add infobox to Map }
【 サンプル例 】
上記の4つの関数定義を読み込んでいれば以下の例を実行できます。
1.MAP表示(ベーシック)
bingMaps_funcs_basic.html
let map; //mapObject[mapはGlobalに置いたほうが便利に使い回せそうなので現時点ではそうしてます] function GetMap() { map = mapStart("#myMap", 47.6149, -122.1941, "load", 15); //Initialization processing }
2.MAP表示(Pushpin追加)
bingMaps_funcs_pushpin.html
let map; //mapObject function GetMap() { map = mapStart("#myMap", 47.6149, -122.1941, "load", 18); //Initialization processing mapPushpin(map, 47.6149, -122.1941, "#ff0000", true,true,true,true); //pushpin }
3.MAP表示(Infobox追加)
bingMaps_funcs.html
let map; //mapObject function GetMap() { map = mapStart("#myMap", 47.6149, -122.1941, "load", 18); //Initialization processing mapPushpin(map, 47.6149, -122.1941, "#ff0000", true,true,true,true); //pushpin mapInfobox(map, 47.6149, -122.1941, "AAA", "Start"); //infobox }
4.MAP表示(pushpin&Infoboxを3秒後に2つ目追加)
bingMaps_funcs.html
let map; //mapObject function GetMap() { map = mapStart("#myMap", 47.6149, -122.1941, "load", 18); //Initialization processing mapPushpin(map, 47.6149, -122.1941, "#ff0000", true,true,true,true); //pushpin mapInfobox(map, 47.6149, -122.1941, "AAA", "Start"); //infobox } //********************************************************************* //新しく追加: 3秒後に違う場所を中心に表示してPushpinとInfoboxを更に追加 //********************************************************************* setTimeout(function () { mapChangeView(map, 47.6150, -122.1950, "load", 18); mapPushpin(map, 47.6150, -122.1950, "#ffff00", true,true,true,true); mapInfobox(map, 47.6150, -122.1950 , "BBB", "End"); },3000);
5.MAP表示(ClickEventで更にPushpin&Infobox追加)
bingMaps_funcs.html
let map; //mapObject function GetMap() { map = mapStart("#myMap", 47.6149, -122.1941, "load", 18); //Initialization processing mapPushpin(map, 47.6149, -122.1941, "#ff0000", true,true,true,true); //pushpin mapInfobox(map, 47.6149, -122.1941, "AAA", "Start"); //infobox } //3秒後に違う場所を中心に表示してPushpinとInfoboxを更に追加 setTimeout(function () { mapChangeView(map, 47.6150, -122.1950, "load", 18); mapPushpin(map, 47.6150, -122.1950, "#ffff00", true,true,true,true); mapInfobox(map, 47.6150, -122.1950 , "BBB", "End"); },3000); //********************************************************************* // 新しく追加 : ClickEvent //********************************************************************* document.querySelector("#myMap").onclick = function(){ mapChangeView(map, 47.6160, -122.196, "load", 17); mapPushpin(map, 47.6160, -122.1960, "#ffff00", true,true,true,true); mapInfobox(map, 47.6160, -122.1960 , "CCC", "End"); }
サクッと作ってみた感想
できるだけ1行で一つの指示を完了させたいため、引数が多いものもありますが、サクッと自分のアプリケーションでの仕様理解であれば軽く使えそうです。
※NullCheck・TypeCheck等は時間の都合上後回しにしてます。
BingMapsを使いやすくするライブラリなどでてくれればありがたいですね。
自分で作ればいいのかも・・・Githubに基本形上げて、Openにやれば数名でできそうですね。
プログラミング初心者にはこういう関数化すると便利なことを知ってほしいですね。
作業も捗りますね。
もう少し時間をかけて、汎用的なものを今度は作ってみたいと思います。
コメント
コメントを投稿