如何通过坐标或标题选择标记?

时间:2014-02-11 18:27:56

标签: javascript jquery google-maps google-maps-api-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()

我的目标是点击链接和缩放+显示信息窗口,方法是打开它或触发点击标记

1 个答案:

答案 0 :(得分:1)

我认为这个答案可以帮助你解决这个问题:https://stackoverflow.com/a/14524925/1856970

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

另一种方法是在foreach循环中创建链接单击事件,在其中实例化标记。这可以通过允许您在进度中使用每个标记来简化操作,并且无需在以后的执行点选择标记。

一旦你有了合适的标记,获得长拉特是微不足道的,可以使用getPosition完成(可能是为了使地图居中等)。