Javascript 在谷歌地图中,边界总是返回相同的坐标
我试图在地图上放置标记,并在用户移动地图时重新加载标记,但问题很少Javascript 在谷歌地图中,边界总是返回相同的坐标,javascript,ajax,google-maps,geolocation,Javascript,Ajax,Google Maps,Geolocation,我试图在地图上放置标记,并在用户移动地图时重新加载标记,但问题很少 首先,当我试图获取bounds.getNorthEast()时&bounds.getSouthWest(),我得到的是相同的lat/lng,我不明白为什么 第二,当我移动地图时,bounds.getNorthEast()&bounds.getSouthWest()始终返回相同的内容 这是我的密码: $( document ).ready(function() { function initialize
- 首先,当我试图获取
bounds.getNorthEast()时代码>&
bounds.getSouthWest()代码>,我得到的是相同的lat/lng,我不明白为什么
- 第二,当我移动地图时,
bounds.getNorthEast()代码>&
bounds.getSouthWest()代码>始终返回相同的内容
$( document ).ready(function() {
function initialize() {
var bounds = new google.maps.LatLngBounds();
var latLng = new google.maps.LatLng(33.76, -84.39);
var myMapOptions = {
sensor: true,
mapTypeControl: true,
zoom: 14,
center: new google.maps.LatLng(33.76, -84.39),
rotateControlOptions: false,
panControl: false,
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var infowindow = new google.maps.InfoWindow({
disableAutoPan : false,
});
var map = new google.maps.Map(document.getElementById('map_newsfeed'), myMapOptions);
bounds.extend(latLng);
google.maps.event.addListener(map, 'idle', function(ev){
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
debugger
$.ajax({
url: '/api/v1/building_permits/geo_bbox/'+ne.e+','+ne.d+'/'+sw.e+','+sw.d,
success: function (json) {
for (var i = 0; i < json.length; ++i) {
debugger
var latLng = new google.maps.LatLng(json[i].latitude, json[i].longitude);
bounds.extend(latLng);
var marker = new google.maps.Marker({position: latLng});
attachInfoWindows(marker, map, infowindow, json[i].latitude, json[i].longitude)
map.fitBounds(bounds);
}
}
});
});
}
function attachInfoWindows(marker, map, infowindow, lat, lng) {
google.maps.event.addListener(marker, 'click', function() {
var lat1 = lat, lng2 = lng;
$.ajax({
url: '/api/v1/building_permits/'+lat1+'/'+lng2,
async: false,
success: function (json) {
infowindow.setContent(json);
infowindow.open(marker.get('map'), marker);
//map.panTo(marker.getPosition());
}
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
});
$(文档).ready(函数(){
函数初始化(){
var bounds=new google.maps.LatLngBounds();
var-latLng=新的google.maps.latLng(33.76,-84.39);
var myMapOptions={
传感器:对,
mapTypeControl:true,
缩放:14,
中心:新谷歌地图拉特宁(33.76,-84.39),
旋转控制:错误,
泛控制:错误,
滚轮:错误,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var infowindow=new google.maps.infowindow({
disableAutoPan:错,
});
var map=new google.maps.map(document.getElementById('map\u newsfeed'),myMapOptions);
边界扩展(latLng);
google.maps.event.addListener(映射,'idle',函数(ev){
var ne=bounds.getNorthEast();
var sw=bounds.getSouthWest();
调试器
$.ajax({
url:'/api/v1/building_permissions/geo_bbox/'+ne.e+'、'+ne.d+'/'+sw.e+'、'+sw.d、,
成功:函数(json){
for(var i=0;i
AJAX请求中需要的边界是google.maps.Map对象的边界。要实现这一点:
bounds = map.getBounds();
但是,当您首次初始化映射时,它将不可用,请在第一个“bounds_changed”事件触发时获取它:
function initialize() {
var bounds = new google.maps.LatLngBounds();
var latLng = new google.maps.LatLng(33.76, -84.39);
var myMapOptions = {
sensor: true,
mapTypeControl: true,
zoom: 14,
center: new google.maps.LatLng(33.76, -84.39),
rotateControlOptions: false,
panControl: false,
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var infowindow = new google.maps.InfoWindow({
disableAutoPan : false,
});
var map = new google.maps.Map(document.getElementById('map_newsfeed'), myMapOptions);
google.maps.addListenerOnce(map, 'bounds_changed', function() {
var bounds = map.getBounds();
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
$.ajax({
url: '/api/v1/building_permits/geo_bbox/'+ne.e+','+ne.d+'/'+sw.e+','+sw.d,
success: function (json) {
// now make an empty bounds to determine the new viewport
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < json.length; ++i) {
var latLng = new google.maps.LatLng(json[i].latitude, json[i].longitude);
bounds.extend(latLng);
var marker = new google.maps.Marker({position: latLng});
attachInfoWindows(marker, map, infowindow, json[i].latitude, json[i].longitude)
}
// only fit the bounds when all the markers have been added.
map.fitBounds(bounds);
}
});
});
}
函数初始化(){
var bounds=new google.maps.LatLngBounds();
var-latLng=新的google.maps.latLng(33.76,-84.39);
var myMapOptions={
传感器:对,
mapTypeControl:true,
缩放:14,
中心:新谷歌地图拉特宁(33.76,-84.39),
旋转控制:错误,
泛控制:错误,
滚轮:错误,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var infowindow=new google.maps.infowindow({
disableAutoPan:错,
});
var map=new google.maps.map(document.getElementById('map\u newsfeed'),myMapOptions);
google.maps.addListenerOnce(map'bounds_changed',function(){
var bounds=map.getBounds();
var ne=bounds.getNorthEast();
var sw=bounds.getSouthWest();
$.ajax({
url:'/api/v1/building_permissions/geo_bbox/'+ne.e+'、'+ne.d+'/'+sw.e+'、'+sw.d、,
成功:函数(json){
//现在创建一个空边界以确定新视口
var bounds=new google.maps.LatLngBounds();
for(var i=0;i
谢谢。如果我理解正确,map.fitbunds(bounds)
是否将地图放入所有标记中?它将缩放地图并使其居中,以显示其参数中的边界。因此,在这种情况下,由于用户应该放大/缩小,因此移动视口我应该将其删除否?取决于您想要的功能。我修复了它,因为您的代码正在使用它。通常,如果在视口中请求标记,则不需要对返回的标记执行map.fitBounds。谢谢,因此基本上我还可以删除var bounds=new google.maps.LatLngBounds()代码>,边界扩展(latLng)代码>和map.fitbunds(边界)代码>来自ajax,因为我只需要来自视口的标记。正确吗?(我不能正确地尝试代码,知道吗,我没有带我的工作电脑)(很抱歉这些愚蠢的问题)