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,因为我只需要来自视口的标记。正确吗?(我不能正确地尝试代码,知道吗,我没有带我的工作电脑)(很抱歉这些愚蠢的问题)