Bing Maps タイルを Leaflet に統合しようとしています。これを行うために私が見つけたすべてのプラグインは、使用法に関する情報がないため、役に立ちませんでした. Leaflet から X、Y、Z 座標を受け取るスクリプトを PHP で作成することはできますが (スクリプトをタイル サーバーの URL として設定するだけです)、それらを Quadkey に変換する方法が必要です。どちらの答えでも構いません。役立つ場合は、Bing Maps API キーを持っています。
2 に答える
GitHub ユーザー shramov のleaflet-pluginsリポジトリ ( Nicolas の回答で共有されている要点にリンクされています) には、Bing タイル レイヤーを使用した例が含まれており、私が知る限り、かなりよく維持されています。Leaflet JS および CSS とともにBing.jsファイルを含める必要があります。
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet.js"></script>
<script src="Bing.js"></script>
<div id="map"></div>
<script type='text/javascript'>
var map = new L.Map('map', {center: new L.LatLng(67.6755, 33.936), zoom: 10 });
var bing = new L.BingLayer(YOUR_BING_API_KEY);
map.addLayer(bing);
</script>
Bing タイル レイヤーのデフォルトが航空写真であることがわかります。ファイルを開くと、4 行目でプロパティが に設定されているBing.js
ことがわかります。これは、対応するタイル画像に変更することができます。type
'Aerial'
'Road'
'AerialWithLabels'
Leaflet の X/Y/Zoom からクワッドキーを直接生成し、Bing Maps タイルをクライアント アプリケーションに統合できるため、これを行うために php モジュールを使用する必要はないと思います。JavaScript を使用して X/Y/ズームをクワッドキーに変換するには、次のようにします。
function TileXYToQuadKey(tileX, tileY, levelOfDetail) {
var quadKey = '';
for (var i = levelOfDetail; i > 0; i--) {
var digit = '0';
var mask = 1 << (i - 1);
if ((tileX & mask) != 0) {
digit++;
}
if ((tileY & mask) != 0) {
digit++; digit++;
}
quadKey += digit;
} //for i return quadKey;
}
リーフレットへの Bing レイヤーの可能な実装は次のとおりです: https://gist.github.com/1221998
ここでは、Bing が使用しているタイル スキームに関する興味深い情報を見つけることができます: http://msdn.microsoft.com/en-us/library/bb259689.aspx
このような使用は、ライセンスを考慮せずに行うべきものではないことに注意してください。画像サービスの詳細については、リーフレット プラグインで使用されるような画像サービスの情報を使用して統合する必要があります (使用状況を追跡し、Bing タイル URI へのアクセス方法がサポートされているため)。画像サービスの詳細については、MSDN のドキュメント http: //msdn.microsoft.com/en-us/library/ff701716.aspx