我有一个谷歌地图,我使用geoJSON将几何数据加载到数据层。我绑定到数据层中的以下事件。
map.data.addListener('click', function (event) { console.log(event);});
如何手动触发此事件?我知道我可以手动触发标记上的点击事件,但它是通过google.maps.event
触发的。
答案 0 :(得分:2)
应该使用google.maps.event.trigger。
试试这个(不确定):
// invoke a click
google.maps.event.trigger(map.data, 'click');
答案 1 :(得分:0)
虽然 Emmanuel 的回答在技术上是正确的,但我想扩展它,因为我努力了 2-3 个小时才能让它工作。 在我的代码中,我有一个使用特征对象的预定义点击事件函数。 这是我使用功能对象的点击事件:
transLayerData.addListener('click', function (event) {
var lfeature = event.feature;
var html = lfeature.getProperty('popupInfo');
infowindow.setContent(html);
infowindow.setPosition(event.latLng);
infowindow.setOptions({pixelOffset: new google.maps.Size(0,-34)});
infowindow.open(myMap);
});
如果您在预定义的数据层点击功能中使用特征对象(如上),重要的是您传递特征对象并创建一个包含特征对象的事件对象。 这是我的代码,它从要素对象中获取纬度和经度并创建一个事件对象:
var featureGeometry = feature.getGeometry();
var lsType = featureGeometry.getType();
var isLineData = false;
var lsType = featureGeometry.getType();
if ((lsType == 'LineString') || (lsType == 'MultiLineString') || (lsType == 'LinearRing') || (lsType == 'Polygon') | (lsType == 'MultiPolygon')) {
isLineData = true;
}
var featurePosition;
if (isLineData) {
// will center the map on the first vertex of the first LineString
var tmp = featureGeometry.getAt(0);
featurePosition = featureGeometry.getAt(0);
// following will set line's storke weight to 10
feature.setProperty('strokeWeight', 10);
} else{
featurePosition = featureGeometry.get();
}
myMap.setZoom(10);
myMap.setCenter(featurePosition);
var llat = featurePosition.lat();
var llong = featurePosition.lng();
// Creating event with the feature object is important. Especially if you have your very own feature click method defined
var lEvent = {
stop: null,
latLng: new google.maps.LatLng(llat, llong),
feature: feature,
}
// transLayerData is your data layer object.
// This is how I have defined my translayer object:
// transLayerData = new google.maps.Data({ map: myMap });
if (!isLineData) {
google.maps.event.trigger(transLayerData, 'click', lEvent);
} else {
google.maps.event.trigger(transLayerData, 'mouseover', lEvent);
}
}