Google地图 - 在特定点(长/纬线)触发数据层上的点击事件

时间:2017-07-26 03:46:35

标签: google-maps google-maps-api-3

我正在使用GeoJSON加载谷歌地图,加载地图并应用数据层后,我想自动为用户触发特定点的点击事件。随后,他们可以点击整个地图与之互动。

所以对于自动加载部分,我尝试过这样的事情:

var x = new google.maps.LatLng(myLongitude, myLatitude);
google.maps.event.trigger(map.data, 'click', WHAT_GOES_HERE?);

但是我无法弄清楚该功能的最后部分是什么。点击的相应功能是:

 map.data.addListener('click', function (event) {
    ...
    code
    ...
   }

事件触发,但事件当然为空。我需要(事件)填充一个功能(这是预期的类型),但我似乎无法弄清楚如何从长/纬度获取该功能。

所以我加载了我的数据层,我有我的long / lat,但我似乎无法从long / lat中检索一个特征。关于如何检索这个的任何建议?

1 个答案:

答案 0 :(得分:2)

A(on)Click看起来像这样(假设我们在那里放了一个标记):

map.addListener('click', function (event) {
  var position = {lat: event.latLng.lat(), lng: event.latLng.lng()}
  //alert(JSON.stringify(position));
  var marker = new google.maps.Marker({position: position, map: map});
});

让我们改变这一点。

假设您有按钮调用布鲁塞尔或巴黎的点击

<input type="button" value="click on Brussels" onclick="clickOnMap(50.85, 4.35)">
<input type="button" value="click on Paris" onclick="clickOnMap(48.84, 2.35)">
<script>
function clickOnMap(lat, lng) {
  var event = {latLng: {}};
  event.latLng.lat = function() { return lat };
  event.latLng.lng = function() { return lng };
  google.maps.event.trigger(map, 'click', event);
}   
</script>

单击该按钮与在相同坐标上单击地图具有相同的效果。

当然,您可以自动调用clickOnMap函数。

你对此有所帮助吗?

编辑:假设您需要更多事件属性,例如event.feature.getProperty(“name”);

尝试添加以下内容: 我不知道还有什么是预期的,但你可以继续添加这样的属性。

function clickOnMap(lat, lng, name) {
  var event = {latLng: {}, feature: {}};
  event.latLng.lat = function() { return lat };
  event.latLng.lng = function() { return lng };
  event.feature.getProperty = function(property) { return name; };
  google.maps.event.trigger(map, 'click', event);
}