2014-02-11 31 views
3

我有动态生成的标记使用gmaps.js 它的工作原理。如何通过坐标或标题选择标记?

但我想通过坐标选择标记并点击它。

我知道如何触发它,但我无法弄清楚如何在jQuery中正确选择标记或在map.markers数组中找到它?

这是我的代码:

# = require lib/gmaps 
$(document).on 'ready', -> 

    if $('#map').length > 0 
    map = new GMaps(
     div: "#map" 
     lat: 53.5500000 
     lng: 10.0000000 
     zoom: 12 
    ) 

    url = "nearby_cardiologists.json" + window.location.search 
    $.getJSON url, (data) -> 
     if data and data.length > 0 
     firstMarker = data[0] 
     map.setCenter firstMarker.latitude, firstMarker.longitude 

     $.each data, (index, cardiologist) -> 
      cardiologist_info = '<p>' + '<b>' + cardiologist.title + ' ' + cardiologist.first_name + ' ' + cardiologist.last_name + '</b><br>' + cardiologist.street + ', ' + cardiologist.city 
      infowindow = new google.maps.InfoWindow(content: cardiologist_info) 
      marker = map.addMarker 
      lat: cardiologist.latitude 
      lng: cardiologist.longitude 
      google.maps.event.addListener marker, "click", -> 
      infowindow.open map, this 

     $("#nearby_cardiologists").on 'click', 'a', (event) -> 
      event.preventDefault() 
      cardiologist = $(this) 
      i = cardiologist.data('id') 
      marker = map.markers[0] 
      map.setCenter cardiologist.data('coordinates').latitude, cardiologist.data('coordinates').longitude 
      map.setZoom 16 

     else 
     $('#map').hide() 

我的目标是点击链接,变焦+通过打开它或触发点击标记显示信息窗口

+0

如果你向我们展示了一些你的代码,那么它会有所帮助......做你想要做的事情可能需要你自己的标记数组,然后你可以循环,比较每个标记的lat/lng与您正在搜索的纬度/经度坐标。 – duncan

+0

我加了我的代码。 – tomekfranek

回答

1

我觉得这个答案应该可以帮助您与此案例:https://stackoverflow.com/a/14524925/1856970

您需要能够以某种方式将标记绑定到链接(本示例使用添加到两者的id属性来确定要触发的正确标记点击事件),以便能够在运行时找到它。只能通过它的长/长方向盘来选择标记是不可能的。

另一种方法是在实例化标记的foreach循环中创建一个链接点击事件。这可以通过允许您在进展过程中确定每个标记的范围来简化这些工作,并且不再需要您在稍后的执行点选择标记。

一旦你有合适的标记,获得长经度是微不足道的,可以使用getPosition(大概是为了中心​​地图等)。

+0

你能否详细说明一下或者给我一个关于另一种方式的例子? – tomekfranek

+0

提供的链接是一个可用的示例,说明如何实现这一点,我将为其他人提供一个侦察。 – Swires

+0

谢谢,我想通了:) – tomekfranek