1

我正在使用 Google Maps API v3 实现一个带有标记和提示的相当标准的地图。

我正在尝试一步一步地进行,当我的标记可点击时我被卡住了。我在文档中读到,默认情况下标记是可点击的,并且将显示title参数设置的任何内容。

我成功地在我的地图上的预期位置显示了我的标记。但我无法显示工具提示。标记看起来可点击(光标更改),但点击它们时没有任何反应。我应该期待工具提示出现。

这是我的代码,它是我在 API 文档中找到的内容的简单实现,有一些曲折。

*注意:*我正在遍历一个storesJS 对象以获取我的所有数据。该name属性是纯文本。

/*  Show Stores Data on Map
-----------------------------------------------------  */

var center = new google.maps.LatLng( 47.56980820673984, -71.09390248632815 );

function initialize()
{
  var mapOptions = {
  center   : center,
  zoom     : 6,
  mapTypeId   : google.maps.MapTypeId.ROADMAP,
  zoomControl : true,
  disableDefaultUI : true
};

theMap = new google.maps.Map(
  document.getElementById("storemap"), mapOptions );

/*  place markers on the map  */
$.each( stores, function(i,v)
{
  stores[i]['marker'] = new google.maps.Marker(
    {
      position : new google.maps.LatLng( this.coords.lat, this.coords.lng ),
      map      : theMap,
      title    : this.name
    });
});

}

initialize();

我错过了什么 ?

4

2 回答 2

0

感谢你们,我意识到我完全误解了文档。

我确实感到困惑tooltipInfoWindow我的项目需要一个 InfoWindow,工具提示是出现在标记悬停上的简单文本,而 InfoWindows 需要它们自己的构造函数。

谢谢您的帮助。

于 2013-03-05T14:36:37.503 回答
0

你可能误用了 Jquery 的 .each,试试这个:

/*  place markers on the map  */
stores.forEach(function( store ){
  var tmpmarker = new google.maps.Marker(
    {
      position : new google.maps.LatLng( store.coords.lat, store.coords.lng ),
      map      : theMap,
      title    : store.name
    }
  );
  google.maps.event.addListener(tmpmarker, 'click',
    (function(a){ 
      return function(){
        console.log(JSON.stringify(a, null, 2));
      };  
    })(store)
  );
  store['marker'] = tmpmarker;
});

据我所知,单击标记时没有默认弹出窗口。标题属性应在鼠标悬停时显示为工具提示。

于 2013-03-04T22:25:18.117 回答