我们正在 Rails 中构建一个谷歌地图应用程序,该应用程序最初使用 javascript json 标记生成函数(使用数据对象上的 rails .to_json 方法)加载一些制造商。
然后我们在缩放操作上有一个监听器,它直接将新的 json 文件加载到上面的相同标记函数中。
在初始加载时,标记会正常显示,但在缩放时似乎没有新的标记出现。检查 rails 日志,正在调用 json 文件,因此问题要么与 json 数据的处理方式有关,要么与标记的传递方式有关。
你们中的任何人都可以看到问题所在吗?
var map;
function initialize() {
var myOptions = {
zoom: <%= @zoom %>,
center: new google.maps.LatLng(<%= @centre %>),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),
myOptions);
stream_json = (<%= raw(@stream.to_json) %>);
parse_json(stream_json);
google.maps.event.addListener(map, 'zoom_changed', function() {
json_url = "/test?bounds="+map.getBounds()+"&zoom="+map.getZoom();
stream_json = $.getJSON(json_url);
parse_json(stream_json);
});
function parse_json(json) {
if (json.length > 0) {
var markers = [];
for (i=0; i<json.length; i++) {
var place = json[i];
alert(place.longitude +','+place.latitude);
// addLocation(place);
markers[i] = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(place.latitude, place.longitude)
});
}
}
};
}
google.maps.event.addDomListener(window, 'load', initialize);
非常感谢您可以发送给我们的任何指示!