【问题标题】:Click on google map marker won't open the info window after first click首次点击后点击谷歌地图标记不会打开信息窗口
【发布时间】:2015-07-26 09:06:46
【问题描述】:

我有一个谷歌地图,双击地图会打开一个对话框。如果用户单击确定,那么它将在地图上添加一个标记。此标记将在第一次点击时打开信息窗口(良好行为)。

代码的另一部分将在页面加载时直接显示带有信息窗口的标记,这些标记不会在第一次单击时打开信息窗口(不良行为)。第一次单击时指针会从手变为手指,然后在第二次单击时会打开窗口。

以下显示加载时的商店:

//display the markers
for(var i = 0; i < stores.length; i++) {
  var pos = new google.maps.LatLng(stores[i][8], stores[i][9]);
  all_stores_markers.push( new google.maps.Marker({                       
                                     position: pos,
                                     map: map,
                                     title: stores[i][1],
                                     clickable: true
                         }));
   all_stores_markers[i].html = 'some content';
   google.maps.event.addListener(all_stores_markers[i], 'click', function () {
    // where I have added .html to the marker object.
                                            infowindow.setContent(this.html);
                                            infowindow.open(map, this);  
                                            console.log("click marker");
                                    });                                  
}

这部分是当用户在地图上双击后在对话框中单击确定。以下内容将使标记在第一次点击时可点击:

all_stores_markers.push( new google.maps.Marker({                       
                                position: location,
                                map: map,
                                clickable: true
                        }));
all_stores_markers[all_stores_markers.length-1].html = 'some content';
                        google.maps.event.addListener(all_stores_markers[all_stores_markers.length-1], 'click', function() {
                                infowindow.setContent(this.html);
                                infowindow.open(map, this);  
                        });

这是商店的内容:

 array(2) { [0]=> array(12) { [0]=> string(1) "1" [1]=> string(8) "aaaaaaaa" [2]=> string(15) "fjefjdoiajfdhai" [3]=> string(13) "jadoidjasoijd" [4]=> string(4) "7575" [5]=> string(10) "City folle" [6]=> string(9) "Australia" [7]=> string(13) "http://go.com" [8]=> string(8) "-20.0559" [9]=> string(7) "135.967" [10]=> string(10) "1818181818" [11]=> string(10) "1818181818" } [1]=> array(12) { [0]=> string(1) "2" [1]=> string(8) "New Shop" [2]=> string(11) "adjakdjakld" [3]=> string(6) "eqwewq" [4]=> string(4) "4343" [5]=> string(4) "Arff" [6]=> string(9) "Australia" [7]=> string(15) "http://test.com" [8]=> string(8) "-28.9985" [9]=> string(6) "123.75" [10]=> string(8) "92129181" [11]=> string(8) "82828282" } } 

我看不出这两个部分的代码有太大区别。有什么想法吗?

【问题讨论】:

  • 您的代码对我来说没有问题(无论我是否设置了标题)。可以发stores的内容吗?您使用哪个浏览器/API 版本?
  • 我用的是firefox,api v3。添加了可变内容。
  • FF39 和实验性 API 版本 (code.google.com/p/gmaps-api-issues/issues/detail?id=8278) 存在(已经)一个错误。使用您的代码不会发生在我身上,但是当您没有加载特定的 API 版本时,会强制加载发布版本(v=3),否则将加载实验版本
  • 我加载 api 的方式是这样
  • 所以从 API-src 中删除 .expmaps.googleapis.com/maps/api/…

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


【解决方案1】:

很抱歉提出这个问题,但我找到了解决方案。

由于一些非常非常奇怪的原因,代码的不同之处在于标记的“标题”属性。我删除了它,现在一切都很好。

我无法解释为什么这会对点击产生影响...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多