Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Map V3:fitbounds和center不在一起工作_Javascript_Google Maps - Fatal编程技术网

Javascript Google Map V3:fitbounds和center不在一起工作

Javascript Google Map V3:fitbounds和center不在一起工作,javascript,google-maps,Javascript,Google Maps,以下代码在地图上显示教堂和牧师: var churchLatLng = new google.maps.LatLng(53.4, 0.14); var mapOptions = { center: churchLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP }; myMap = new google.maps.Map(document.getElementById('myDiv'

以下代码在地图上显示教堂和牧师:

    var churchLatLng = new google.maps.LatLng(53.4, 0.14);

    var mapOptions = {
        center: churchLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    myMap = new google.maps.Map(document.getElementById('myDiv'), mapOptions);

    var bounds = new google.maps.LatLngBounds();

    // Setting church marker
    new google.maps.Marker({
        position: churchLatLng,
        map: myMap,
    });

    bounds.extend(churchLatLng);

    var priestLatLng = new google.maps.LatLng(51.2,0.13);                               

    new google.maps.Marker({
       position: priestLatLng, 
       map: myMap
    });

    bounds.extend(priestLatLng);    

    myMap.fitBounds(bounds);    
代码使用选项“center”将教堂居中于地图的中心,并使用函数“fitBounds”将所有标记对齐(本例中仅限教堂和牧师)

结果是,地图边框设置为包含两个标记,但“中心”选项不再起作用,将被忽略

我想要的是设定界限,但同时在地图的中心显示教堂


如何实现这一点?

尝试使用eventlistener并等待边界更改(它是异步工作的)。
比如:

google.maps.event.addListenerOnce(myMap, 'bounds_changed', function(event) {
    myMap.setCenter(churchLatLng);
});

尝试使用eventlistener并等待边界更改(它是异步工作的)。
比如:

google.maps.event.addListenerOnce(myMap, 'bounds_changed', function(event) {
    myMap.setCenter(churchLatLng);
});
  • 调用myMap.fitBounds设置边界以显示所有标记
  • 将地图更改为您喜欢的中心位置(教堂上)
  • 向bounds_changed事件添加一个侦听器,当该事件触发时,检查地图边界是否包含牧师标记,如果包含,则完成
  • 如果地图边界不包含祭司标记,请缩小一个级别(map.setZoom(map.getZoom()-1))

  • 调用myMap.fitBounds设置边界以显示所有标记
  • 将地图更改为您喜欢的中心位置(教堂上)
  • 向bounds_changed事件添加一个侦听器,当该事件触发时,检查地图边界是否包含牧师标记,如果包含,则完成
  • 如果地图边界不包含祭司标记,请缩小一个级别(map.setZoom(map.getZoom()-1))


  • 我想你做不到<代码> FiTimeNo/Coo>中心放在所有标记中的地图。或者如果您在
    fitBounds()之后执行
    setCenter(…)
    ,我认为您不能<代码> FiTimeNo/Coo>中心放在所有标记中的地图。或者如果在
    fitBounds()
    之后执行
    setCenter(…)
    ,它会居中,但牧师会离开地图。通过这种方式,它只在中心工作,但牧师离开了地图。通过这种方式,它只在中心工作我希望有一种更干净的方法来做到这一点:/I我必须将
    中心更改为
    addListenerOnce
    ,而不是
    addListener
    ,否则这正是我所需要的。这很有意义,修改了答案以纳入该建议。我希望有一个更干净的方法来做到这一点:/I必须将
    中心更改为
    addListenerOnce
    ,而不是
    addListener
    ,否则这正是我需要的。这很有意义,修改了答案以纳入该建议。