一些原型与谷歌地图信息窗口
Some prototyping with google maps infowindow
我是SO的新手,我有一个关于。。。嗯,我不知道这到底是怎么回事,所以我希望你能给我一些线索。我希望不要让你厌烦,所以我们开始吧。
我已经制作了一个原型化的"类方法"(使用这个)。它工作得很好。
然后,我开始把我的谷歌地图"类"编码成这样的
var map = Class.extend({
init: function(){
this.mystyles = [
{
featureType: "all",
elementType: "labels",
stylers: [
{
visibility: "off"
}
]
}
];
this.myoptions= {
zoom: 12,
disableDefaultUI: true,
center: new google.maps.LatLng(10.24462, -67.59374199999999),
mapTypeId: google.maps.MapTypeId.ROADMAP,
styles: this.mystyles
}
this.markerSucursal = new Array();
this.infoWindow = new Array();
},
initializeMap: function(divElemento){
this.objMap = new google.maps.Map(divElemento,this.myoptions);
},
preloadMarkers: function(jsonArray){
for(var k in jsonArray) {
var localizacion= new google.maps.LatLng(jsonArray[k].coordenada_x,jsonArray[k].coordenada_y);
var marker= new google.maps.Marker({
position: localizacion,
map: this.objMap
})
this.markerSucursal[k] = marker;
}
},
createDialogs: function(jsonArray){
for(var k in jsonArray) {
var marker = this.markerSucursal[k];
var contentDialog = "<div><p><strong>Testing testing</strong></p></div>"
var infowindow = new google.maps.InfoWindow({
content : contentDialog
})
google.maps.event.addListener(marker, "click", function() {
infowindow.open(this.objMap,marker)
})
this.infoWindow[k] = infowindow
}
}});
显示地图[检查]
显示标记[Check]
单击[]时显示信息窗口
这里可能出了什么问题?如果您需要更多信息或代码,请告诉我。
好的,明白了……我真的很抱歉这个混乱而愚蠢的问题,但我已经解决了。。。
问题是,我在google.maps.event.addListener函数中引用了上下文"this"。。。在内部函数中,我无法引用父函数方法(如this.objmap或this.markrSucursal)。不要忘记,在调用google.map对象之前,我在原型方法中进行了编码
为了记录在案,我自己(以及其他有这个问题的人)的答案是这样的(我只显示createDialog和preloadMarkers方法)
preloadMarkers: function(jsonArray){
var objMap = this.objMap // the initializeMap method sets this object
for(var k in jsonArray) {
var localization= new google.maps.LatLng(jsonArray[k].coordenada_x,jsonArray[k].coordenada_y);
var marker= new google.maps.Marker({
position: localizacion,
map: objMap
})
this.markerSucursal[k] = marker;
}
},
createDialog: function(jsonArray){
for(var k in jsonArray) {
var marker = this.markerSucursal[k]
var objMap = this.objMap
contentDialog = "<div> <p>testing testing</p> </div>"
var infowindow = new google.maps.InfoWindow({
content: contentDialog
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(objMap,marker);
});
}
}
就是这样……就像魅力一样:)
再次感谢您的阅读,对委内瑞拉糟糕的英语和问候表示歉意!
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 定义完全独立的样式信息
- 使用html2canvas获取基本信息
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 从信息框调用弹出图像库
- 如何在不传递此信息的情况下查找被调用的元素
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 如何通过解析类信息来使用jQuery创建类
- 包含数据库中相关信息的开放模态
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 如何调整信息窗口的大小并点击按钮?+更改信息窗口的内容
- ng在更新$scope后重复不更新信息
- 谷歌地图点击潜水触发信息窗口
- 根据CHECKBOX输入值动态更新DIV信息
- 如何使用ember.js在操作中传递当前上下文中目标旁边的信息
- Jquery on单击“显示信息”
- 将FlowPlayer嵌入谷歌地图信息窗口
- AEM(cq5)使用组件内的信息
- 如何在完整日历中的当天点击时显示活动详细信息
- 使用javascript后台脚本获取Yotutube频道信息