我有使用 gmaps.js 动态生成标记的 map 并且有效。
但我想通过坐标选择标记并触发点击它。
我知道如何触发它,但我不知道如何在 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()
我的目标是点击链接并通过打开它或触发点击标记来缩放 + 显示信息窗口
最佳答案
我认为这个答案应该对您有所帮助:https://stackoverflow.com/a/14524925/1856970
您需要能够以某种方式将标记绑定(bind)到 a 链接(此示例使用附加到两者的 id 属性来确定要触发的正确标记单击事件),以便能够在运行时找到它.不可能仅通过它的长/纬度坐标来选择标记。
另一种方法是在实例化标记的 foreach 循环中创建链接单击事件。这简化了事情,允许您在进展时将每个标记都放在范围内,并且无需在以后的执行点选择标记。
一旦有了合适的标记,获取长纬度就很简单了,可以使用 getPosition 来完成(大概是为了让 map 居中等)。
关于javascript - 如何按坐标或标题选择标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21710079/