0
我正在尝试在我的页面上创建带有标记的Google地图。我有一个无序列表,其中每个项目都有纬度,经度和标题的数据属性。使用JQuery我拉这些值,并在地图上为列表中的每个项目生成一个标记。一切似乎都可以正常工作,除非谷歌地图在地图周围平移时不会加载切片。添加事件监听器会导致Google地图冻结
这是我如何初始化地图:
var map;
// initialize google map
$(function() {
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(CoordinatesLat, CoordinatesLong),
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
}
// initiate map
map = new google.maps.Map($("#map")[0], myOptions);
// when map is loaded, add events and behaviors to it
google.maps.event.addListenerOnce(map, 'tilesloaded', addEventsToMap(".event")); //commenting this line prevents GMAP problems
});
仅供参考 - 我用maps.event.addListener()之前,地图将暂时工作,然后变得完全没有反应。将其更改为maps.event.addListenerOnce()可以阻止冻结,但仍然存在加载问题。
这是回调,显然在那里我做错了什么:
//add events from event list to map. add behavior to events ie. mouseover
function addEventsToMap(selector) {
$(selector).each(function (i, $e) {
$e = $($e);
var latlng;
if ($e.attr("data-geo-lat") && $e.attr("data-geo-long")) {
latlng = new google.maps.LatLng($e.attr("data-geo-lat"), $e.attr("data-geo-long"));
$e.marker = new google.maps.Marker({
position: latlng,
map: map,
title: $e.attr("data-title")
});
google.maps.event.addListener($e.marker, 'click', function() { window.location = $e.attr("data-href"); });
google.maps.event.addListener($e.marker, 'mouseover', function() { $e.addClass("event-hover"); });
google.maps.event.addListener($e.marker, 'mouseout', function() { $e.removeClass("event-hover"); });
//when mouse hovers over item in list, center map on it's marker
$e.mouseenter(function() {
map.panTo(latlng);
});
}
});
}
任何想法可能是什么造成的?
直接显示#map元素吗?在隐藏该点的元素中启动地图时遇到问题。 –
是地图元素立即显示;不隐藏。 – wycleffsean