GeoJson 形式のデータをヒア マップ js API に適切な方法でロードすることは可能ですか? GeoJSONでフォーマットされたmysqlからのデータを送信するためにAJAXを使用しています。kmlファイルを保存したくありません。
2 に答える
従来の 2.x API で直接利用できる GeoJSON パーサーはありません。独自に作成する必要があります。Google Maps API 用の外部 GeoJSONパーサー ライブラリが存在するため、Google 固有のマップ オブジェクトを同等の HERE Maps オブジェクトに置き換えるだけです。
オリジナルに基づいてポートを作成しましたが、HERE マップの構文はそのままにしておきます
GeoJSONContainerの基本的な使用法は、次のようにparseGeoJSON()メソッドを使用することです。
function extend(B, A) {
function I() {}
I.prototype = A.prototype;
B.prototype = new I();
B.prototype.constructor = B;
}
function createGeoJsonParser(){
extend(GeoJSONContainer, nokia.maps.map.Container);
parser = new GeoJSONContainer();
}
function parseJson(jsonObject){
result = parser.parseGeoJSON(jsonObject);
if (parser.state == "finished") {
map.objects.addAll(result);
map.set("center", map.objects.get(0).getBoundingBox().getCenter());
map.addListener("click" , function(evt) {
var text = JSON.stringify(evt.target.properties);
bubble = infoBubbles.addBubble(text!== undefined ?
text : "properties undefined",
evt.target.getBoundingBox().getCenter());
}, false);
} else {
console.log(result);
}
}
リンクを参照してください:シンプルな geoJSON 解析
GeoJSONContainerはContainerの拡張であるため、 addGeoJSON()を使用して geoJSON データを地図に直接追加することもできます。
var err = resultSet.addGeoJSON(jsonManager.object);
if (resultSet.state == "finished") {
map.zoomTo(container.getBoundingBox());
container.addListener("click" , function(evt) {
infoBubbles.addBubble(evt.target.properties.Description,
evt.target.getBoundingBox().getCenter());
}, false);
} else {
alert(err);
}
基本的な使用例: -ロシアの州
クラスタリングコンポーネントと同じ方法でデータ ポイントを追加してスタイルを設定することもできます。
スタイル付きの例:
もちろん無保証です。
現在の3.x API では、geojson リーダーが標準で含まれています。以下の fxxxit の回答を参照できます。
var reader = new H.data.geojson.Reader('/path/to/geojson/file.json');
reader.parse();
//assuming that map already exists
map.addLayer(reader.getLayer());
GeoJSON データを直接取得できる API の「新しい」バージョンがあるようです ( https://developer.here.com/documentation/maps/api_reference/H.data.geojson.Reader.html )
var reader = new H.data.geojson.Reader('/path/to/geojson/file.json');
reader.parse();
//assuming that map already exists
map.addLayer(reader.getLayer());