在我的项目中,我有一个谷歌地图,我需要从数据库中获取地图上的标记。 我有简单的代码,例如:
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
google.maps.event.addListener(map, 'idle', function () {
getmarkers(map);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
此代码运行良好,但缺少一个 - 只有在用户移动地图时才会加载新标记。 但是如果用户只是坐在电脑前看地图而不是移动它,我也需要加载标记。
我认为最好的方法是使用setInterval(getmarkers(map), 3000)
,但如果我使用它,除了那个函数google.maps.event.addListener(...
,它找不到地图。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
有两个问题,
setInterval
期望第一个参数是一个函数(但它不是,它是一个函数调用,它将立即执行)。使用匿名函数执行语句:
setInterval(function(){getmarkers(map);}, 3000);
将setInterval
- 调用放在initialize
的末尾,以确保定义了地图。