Google Maps API v3 - 帮助从文本链接链接到Google Marker

时间:2012-05-25 14:59:01

标签: google-maps-api-3 maps

我创建了一个位于以下位置的Google地图:http://calwestcultural.com/sgs/example_map.html

我正在尝试使用我的Google地图标记/ infowindow将我的spry菜单中的一些文本链接到左侧。

我的javascript是有限的,因为我尝试为每个标记创建ID并链接到该ID,但它不起作用。我在这一点上很难过。

当您将鼠标悬停在其上时,我也希望我的标记显示名称。我使用不同的样式地图实现了这一点,但是在创建标记时遇到了问题,因此我上面使用的当前标记将是我的最终标记,我只需要正确引用链接。

请给我任何帮助,让我现在可以放弃我的JS HEADACHE !!!!!!!!!

1 个答案:

答案 0 :(得分:1)

此页面显示了将侧边栏链接连接到标记的一种方法

http://www.wolfpil.de/v3/toggle-cats.html

将此页面的模式复制到您的案例中,您需要一个gmarkers全局变量

//<![CDATA[
var map = null;
var gmarkers = [];
function initialize() {

添加标记的顺序很重要,它们应与侧边栏中的业务顺序相匹配。 gmarkers将更新createMarker

var point = new google.maps.LatLng(37.984798,-121.312094); 
var marker = createMarker(point,'<div style="width:205px"><center><img src="images/sampleuopsign.jpg" /></center><h2>University of the Pacific</h2>3601 Pacific Avenue<br>Stockton, California 95211<br>209.946.2011<br><small>On the web visit: <a href="http://www.pacific.edu">www.Pacific.edu<\/a></small><\/div>')

...

function createMarker(latlng, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
    });
    gmarkers.push(marker);
}

有了数组,我们可以通过索引来解决它们。当点击侧边栏条目(链接)时,Wolfpil只会触发点击事件:

function triggerClick(i) {
  google.maps.event.trigger(gmarkers[i],"click");
}

每个链接都可以这样写,用添加每个标记的顺序替换0和1:

<a href="javascript:triggerClick(0)">Bank of America</a>
<a href="javascript:triggerClick(1)">Bank of Stockton</a>

关于显示标题的标记悬停,最简单的方法是在创建标记时添加title选项,但这意味着向createMarkers函数添加新参数:

 function createMarker(latlng, storeName, html) {
  var contentString = html;

  var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    title: storeName,
    zIndex: Math.round(latlng.lat()*-100000)<<5
  });

从长远来看,更好的替代方法是使用gmarkers的对象而不是数组,因为在列表中间添加项目将会破坏HTML中的现有项目。

然后,可以通过字符串ID调用地点,例如gmarkers['safeway']。我们不是将标记推送到createMarker中的数组,而是将id分配给标记:

gmarkers[id] = marker;

如果遇到麻烦请在下面写下评论!我没有测试上面的代码。