Javascript Google Maps GeoJSON功能触发点击事件

Javascript Google Maps GeoJSON功能触发点击事件,javascript,google-maps,Javascript,Google Maps,我有一个featurecollection功能及其相应的ID,如下所示: "type"=>"Feature", "id"=>"test_1", "properties"=>array("desc"=>... 并希望从文档上的按钮触发单击事件,以便打开信息窗口 var featId = 'test_1'; map.event.trigger(featId, 'click'); 但是我越来越 Uncaught TypeError: Cannot read

我有一个featurecollection功能及其相应的ID,如下所示:

"type"=>"Feature",
    "id"=>"test_1",
    "properties"=>array("desc"=>...
并希望从文档上的按钮触发单击事件,以便打开信息窗口

var featId = 'test_1';
map.event.trigger(featId, 'click');
但是我越来越

Uncaught TypeError: Cannot read property 'trigger' of undefined
单击地图上的多边形时,信息窗口将打开

这是一个例子。 我还使用stackoverflow的编辑器添加了一个代码段

var mygeojson={
“类型”:“FeatureCollection”,
“特点”:[
{
“类型”:“功能”,
'id':'test_2',
“属性”:{},
“几何学”:{
“类型”:“多边形”,
“坐标”:[
[
[
0.5767822265625,
46.437856895024204
],
[
0.560302734375,
46.160809861457125
],
[
0.9118652343749999,
46.10370875598026
],
[
1.42822265625,
46.22545288226939
],
[
0.9118652343749999,
46.581518465658014
],
[
0.5767822265625,
46.437856895024204
]
]
]
}
},
{
“类型”:“功能”,
'id':'test_1',
“属性”:{},
“几何学”:{
“类型”:“多边形”,
“坐标”:[
[
[
1.9335937499999998,
46.98774725646568
],
[
1.8841552734374998,
46.73233101286786
],
[
2.581787109375,
46.53619267489863
],
[
2.8784179687499996,
46.71350244599995
],
[
3.065185546875,
47.00647991252098
],
[
2.3785400390625,
47.18597932702905
],
[
2.1917724609375,
47.60986653003798
],
[
1.9335937499999998,
46.98774725646568
]
]
]
}
}
]
};
函数openinfo(target_featId)
{
//map.event.trigger(featId,'click');
google.maps.event.trigger(映射,'click');
}
initpage=函数()
{
所选的var_id=0;
log('html-loaded');
//中心横向/纵向
var latlng=新的google.maps.latlng(46.315,0.467);
//地图配置
变量myOptions={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP,
滚轮:对,
};
map=新的google.maps.map(document.getElementById(“themap”),myOptions);
map.data.addGeoJson(mygeojson);
map.data.setStyle(函数(特性){
//var SD_NAME=feature.getProperty('SD_NAME');
//var color=feature.getProperty('boja');
var featId=feature.getId();
变量颜色='灰色';
如果(选定的\u id==featId)
{
颜色='#009900';
console.log('为'+featId'设置绿色)
}否则
{
颜色=灰色;
console.log('为'+featId'设置灰色)
}
返回{
fillColor:color,
strokeColor:颜色,
冲程重量:1
}
});
var infowindow=new google.maps.infowindow();
map.data.addListener('click',函数(事件){
//var feat_desc=event.feature.getProperty(“desc”);
var featId=event.feature.getId();
map.data.forEach(函数(特性2){
if(featId==selected_id)feature2.setProperty('color','gray');
});
所选_id=featId;
变量颜色='#009900';
setContent(“littletest”+featId+”);
//将信息窗口放置在标记上
setPosition(event.feature.getGeometry().getAt(0).getAt(0));
打开(地图);
});
}
html{height:100%}
正文{高度:100%;边距:0px;填充:0px;背景:#fff;颜色:#bbb;字体大小:13px;字体系列:Arial;}
#themap{height:100%;}




我已通过以下方法成功修复了此问题:

function openinfo(target_featId)
{
      google.maps.event.trigger(map.data,'click',target_featId);
}

然后,addListener函数出现了一个新问题。event.feature没有定义,所以我用:
if(!event.feature)event.feature=event
inside
map.data.addListener('click',function(event){

自动向下投票。你为什么不发布一个?谁能用你提供的代码重现这个问题?请重新打开这个问题。我不知何故在没有JS fiddle的情况下发布了它。我同时添加了-JS fiddle和stackoverflow代码片段。谢谢你的考虑。