OpenLayers で Nokia Here Maps REST API を使用しようとしていますが、方法がわかりません。
Nokia Here Maps
OpenLayers で使用できますか?Nokia Here Maps
TMSをサポートしていますか?
OpenLayers または OpenScales で Nokia Maps を使用する方法を知っている人はいますか?
OpenLayers で Nokia Here Maps REST API を使用しようとしていますが、方法がわかりません。
Nokia Here Maps
OpenLayers で使用できますか?Nokia Here Maps
TMSをサポートしていますか?OpenLayers または OpenScales で Nokia Maps を使用する方法を知っている人はいますか?
これは技術的には可能ですが、十分に注意しないと、Here Maps 位置情報サービスの利用規約、具体的には以下の 2 つの条項に違反する可能性が高くなります。
5 制限事項
(ii) お客様は、複数の静的な地図画像をつなぎ合わせて、ロケーション プラットフォーム サービスのドキュメントで許可されているよりも大きい地図を表示することはできません。
サブセクション 5(ii) は、マップ イメージを効果的に並べて表示することになるため、オープン レイヤー内でのRESTful マップ APIの使用を禁止します。
(iv) お客様は、ロケーション プラットフォーム サービスから、著作権または商標の通知、またはその他の同様の通知、マーキング、または凡例を削除したり、隠したりしてはなりません。
サブセクション 5(iv) は、地図データが第三者から購入された場合、Nokia 自体がその地図に著作権を表示する義務があるため、誰かが適切な帰属なしに地図データを使用するのを阻止するように設計されています。
この問題を回避する最も簡単な方法は、JavaScript 用の HERE Map API を使用することです。これは基本プランで公開されており、必要なすべての著作権情報が既に正しく表示されています。
Open Layers を使用して Nokia Maps を表示する場合は、Nokia の Map Tile サービスを直接使用する必要があります (Map Tile ServiceはTMS をサポートしています) - ただし、このサービスは Enterprise のお客様のみが利用できます。これにアクセスするには、次のことが必要です。
OpenLayers.Layer.XYZ
次に、以下のコード スニペットに示すように、レイヤーを派生させることができます。(もちろん、正しい URL、APP_ID、TOKEN を使用する必要があります)
var map = new OpenLayers.Map({
div: "map",
projection: "EPSG:900913",
layers: [
new OpenLayers.Layer.XYZ(
"HereMap",
[
"MAP_TILE_BASE_URL/${z}/${x}/${y}/256/png8?lg=ENG&app_id=YOUR_APP_ID&token=YOUR_TOKEN"
],
{
attribution: "© 2013 Nokia</span> <a href='http://maps.nokia.com/services/terms' target='_blank' title='Terms of Use' style='color:#333;text-decoration: underline;'>Terms of Use</a></div> <img src='http://api.maps.nokia.com/2.2.4/assets/ovi/mapsapi/by_here.png' border='0'>",
transitionEffect: "resize"
}
)
],
center: [0, 0],
zoom: 1
});
map.addControl(new OpenLayers.Control.LayerSwitcher());
ただし、実行時にサーバーから著作権属性の正しいテキストを取得する必要があるため、これは必ずしも 5(iv) に準拠しているわけではありません。
1 はい、OpenLayers で使用できます。Jason Fox の回答で既に述べたように、アプリケーション ID とトークンが必要になります。gmaps 2 が要求していたのと同じように。
私がやろうとしているのは、OpenLayers.Layer.EventPane を拡張して彼の dom 要素内に Here マップをアタッチする新しいレイヤーを作成することです。これは、私がアイデアを得た OpenLayers.Layer.Google によく似ています。
2 はい。これには、このプロバイダー クラス nokia.maps.map.provider.ImgTileProvide があります。
また、次のテストは、ベース マップが TileProvider のインスタンスであることを示しています。
alert( '' + ( nokia.maps.map.Display.NORMAL instanceof nokia.maps.map.provider.ImgTileProvider ) );