Google Maps API - Map.data scope issue
Google Maps API - Map.data scope issue
我正在尝试通过执行以下操作将GeoJSON层添加到Google地图(v3(:
imageActive = {
url: "images/target_red.png",
origin: new google.maps.Point(0,0),
anchor: new google.maps.Point(11, 11),
} // ACTIVE marker image
jQuery.getJSON('home/gcpts/geojson.php', function(data){
points = map.data.addGeoJson(data);
console.log(points); //this works
});
map.data.setStyle({
clickable: true,
draggable: false,
});
map.data.addListener('click', function(event){
setActiveImage(event);
})
function setActiveImage(event){
for(var i = 0;i<points.length;i++){ //can't read "length" of undefined
points[i].revertStyles();
}
map.data.overrideStyle(event.feature, {
icon: imageActive,
});
}
但是,当我尝试遍历"点"变量时,我似乎无法"看到"它。我主要是未定义,或者如果我尝试调用点的长度(points.length(,那么它就不存在。
如果我在 jQuery 函数中控制台.log(点(,那么我可以看到变量中的所有功能。如果我把它放在外面,那么我就看不到它。关于范围,我缺少什么吗?
我希望我可以设置一个"点击"事件并使用event.feature来覆盖Style。然后,单击其他要素时,该样式将从其他 geoJson 要素中移除并覆盖新单击的要素。
似乎这应该可以正常工作,但我似乎无法弄清楚如何迭代这些功能。
谢谢!
(另外,我在"无冲突"模式下使用jQuery...
所有变量都是全局范围的,因为您没有使用 var
关键字。 似乎其他脚本正在寻找一个points
变量并覆盖了你的变量。 假设您的代码已经包含在某种函数(例如 jQuery ready
处理程序(中,您只需使用 var
即可解决问题。 在您调用getJSON()
之前,我会添加以下代码行:
var points = [];
前面的答案指出,您需要确保"points"变量的作用域正确,但更好的答案是您根本不需要该变量: 由于您使用的是map.data,因此您可以直接使用它来访问您的要素,如下所示:
map.data.foreEch(function(feature) {console.log(feature);})
当然,请注意,您的"map"变量必须具有适当的作用域。
此外,你也不需要使用jQuery——你可以使用map.data.loadGeoJson(theUrl)
加载数据,这将为你做ajax。
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- Ember Data DS.Model's set函数不起作用
- Extending Ext.data.NodeInterface
- $ionicplatform内的$scope不;不起作用
- 使用$scope方法时的ControllerAs语法
- 如何将ngrepeat下的ngmodel绑定到$scope
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- 如何获取$data.Entity的密钥
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 在观看后清除之前添加的GeoJson(scope.data)中的谷歌地图
- 为什么onChange回调中对$scope.data的更改不会重新绘制chart.js
- 以离子和角度动态提醒$scope.data
- 尝试将 $scope.data 传递到 param 对象中,从控制器传递到 Angular 中的服务
- Angular $http调用不绑定成功$scope.data
- Google地图API不适用于angular JS$scope.data输入
- 自定义AngularJS过滤器忽略我的参数并接收一些其他scope.data
- AngularJs如何传递Json字符串到$scope.msg=msg.data
- Google Maps API - Map.data scope issue
- 在Angular Scope Data中使用HTML标记
- Angular nvd3 sunburst不会随$scope.data的更改而更新