我使用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 :(得分:1)
我认为这个答案可以帮助你解决这个问题:https://stackoverflow.com/a/14524925/1856970
您需要能够以某种方式将标记绑定到链接(此示例使用附加到两者的id属性来确定要触发的正确标记单击事件),以便能够在运行时找到它。不可能仅通过它的长/拉索来选择标记。
另一种方法是在foreach循环中创建链接单击事件,在其中实例化标记。这可以通过允许您在进度中使用每个标记来简化操作,并且无需在以后的执行点选择标记。
一旦你有了合适的标记,获得长拉特是微不足道的,可以使用getPosition完成(可能是为了使地图居中等)。