0

私は外部のgeojson-fileを使用してGoogleマップにレイヤーを追加しています。このファイルには、検索時にアクセスしたい領域ごとに2つのプロパティが含まれています。ユーザーが領域をクリックしたり、サポートされている他のイベントハンドラを使用したりすると、プロパティを簡単に取得できます。GoogleマップV3 - >緯度経度や検索ボックスの他の情報を使用してGeojsonからプロパティを取得できますか?

this.map.data.addListener('mouseover', (event) => { 
    console.log(event.feature.getProperty('VD')); 
}); 

https://developers.google.com/maps/documentation/javascript/datalayer#add_event_handlers

は、しかし、私は、これらの特性を検索する際に、そのアクセスからだ何 geojson面積を取得したいと思います。これは可能ですか?

searchBox.addListener('places_changed',() => { 
    var places = this.searchBox.getPlaces(); 
    ... 
    places.forEach((place) => { 
    ... 

enter image description here

+0

人にgoogle-mapsタグで質問を投票します。質問が今後よりよく書かれるように投票している理由を述べてください。 – Ogglas

答えて

1

あなたは緯度経度の位置がポリゴンに含まれるかどうかを確認するためにcontainsLocationユーティリティを使用することができます。

のでforループの中であなたのData layerのすべての機能を取得(loadGeoJson()またはaddGeoJson()が取り込ま)、各ジオメトリを取得し、containsLocation()機能を使用するためにポリゴンを作成します。例えば

、次のコードをチェックloc(緯度経度)をfeatsアレイの特徴の1つに含まれている場合:ここ

inWhichArea = function(map, loc) { 
    for (var i in feats) { 
    var area = feats[i].getGeometry(); 
    var poly = new google.maps.Polygon({ 
     paths: area.getAt(0).getArray(), 
     map: map, 
     clickable: false 
    }); 
    if (google.maps.geometry.poly.containsLocation(loc, poly)) { 
     return feats[i]; 
    } 
    } 
    return null; 
} 

は、実施例とjsfiddleある:http://jsfiddle.net/beaver71/sgtpop4f/

+0

私はあなたにビールを買いたいと思っていますが、私のおかげで十分です。私の特徴は 'Polygon'ではなく' MultiPolygon'だったので、少し修正を加えなければなりませんでした。単純な変更: 'paths:area.getArray()[0] .getAt(0).getArray()' https://developers.google.com/maps/documentation/javascript/3.exp/reference#Data.MultiPolygon – Ogglas

関連する問題