Javascript 使用多个标记和谷歌地图api的中心地图

Javascript 使用多个标记和谷歌地图api的中心地图,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,当前使用下面的JS绘制带有两个标记的地图,但是当地图加载时,当标记位于特定位置时,地图无法正确居中。。。我相当肯定这是一个简单的错误,但无法发现它 [var marker1, marker2; var poly, geodesicPoly; function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 4, center: {lat: 34, lng: -

当前使用下面的JS绘制带有两个标记的地图,但是当地图加载时,当标记位于特定位置时,地图无法正确居中。。。我相当肯定这是一个简单的错误,但无法发现它

[var marker1, marker2;
var poly, geodesicPoly;

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: {lat: 34, lng: -40.605}
  });

  map.controls\[google.maps.ControlPosition.TOP_CENTER\].push(
      document.getElementById('info'));

  marker1 = new google.maps.Marker({
    map: map,
    draggable: true,
    position: {lat: <?php echo $Lat1; ?>, lng: <?php echo $Long1; ?>}
  });

  marker2 = new google.maps.Marker({
    map: map,
    draggable: true,
    position: {lat: <?php echo $Lat2; ?>, lng: <?php echo $Long2; ?>}
  });

  var bounds = new google.maps.LatLngBounds(
      marker1.getPosition(), marker2.getPosition());
  map.fitBounds(bounds);


  google.maps.event.addListener(marker1, 'position_changed', update);
  google.maps.event.addListener(marker2, 'position_changed', update);

  poly = new google.maps.Polyline({
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 3,
    map: map,
  });

  /*geodesicPoly = new google.maps.Polyline({
    strokeColor: '#CC0099',
    strokeOpacity: 1.0,
    strokeWeight: 3,
    geodesic: true,
    map: map
  });*/

  update();
}

function update() {
  var path = \[marker1.getPosition(), marker2.getPosition()\];
  poly.setPath(path);
  geodesicPoly.setPath(path);
  var heading = google.maps.geometry.spherical.computeHeading(path\[0\], path\[1\]);
  document.getElementById('heading').value = heading;
  document.getElementById('origin').value = path\[0\].toString();
  document.getElementById('destination').value = path\[1\].toString()https://stackoverflow.com/editing-help;
}]
[var marker1,marker2;
var poly,测地线poly;
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:4,
中心:{lat:34,lng:-40.605}
});
map.controls\[google.maps.ControlPosition.TOP\u CENTER\]点击(
document.getElementById('info');
marker1=新的google.maps.Marker({
地图:地图,
真的,
位置:{lat:,lng:}
});
marker2=新的google.maps.Marker({
地图:地图,
真的,
位置:{lat:,lng:}
});
var bounds=new google.maps.LatLngBounds(
marker1.getPosition(),marker2.getPosition();
映射边界(bounds);
google.maps.event.addListener(标记1,“位置改变”,更新);
google.maps.event.addListener(marker2,“位置改变”,更新);
poly=新的google.maps.Polyline({
strokeColor:“#FF0000”,
笔划不透明度:1.0,
冲程重量:3,
地图:地图,
});
/*geodesicPoly=新的google.maps.Polyline({
strokeColor:“#CC0099”,
笔划不透明度:1.0,
冲程重量:3,
测地线:正确,
地图:地图
});*/
更新();
}
函数更新(){
var path=\[marker1.getPosition(),marker2.getPosition()\];
poly.setPath(path);
测地线多边形设置路径(路径);
var heading=google.maps.geometry.spheremic.computeHeading(路径\[0\],路径\[1\]);
document.getElementById('heading')。value=heading;
document.getElementById('origin')。value=path\[0\]。toString();
document.getElementById('destination')。value=path\[1\]。toString()https://stackoverflow.com/editing-help;
}]
图:

构造函数按特定顺序获取两个对象:西南角和东北角

横向边界(西南:横向、东北:横向)

从其西南角和东北角的点构造矩形

因此,这是不正确的(除非标记之间的关系正确):

如果要将两个任意位置添加到google.maps.LatLngBounds,请创建一个空边界,并使用两个位置对其进行扩展:

var bounds = new google.maps.LatLngBounds();
bounds.extend(marker1.getPosition());
bounds.extend(marker2.getPosition())
map.fitBounds(bounds);

代码片段:

var标记1、标记2;
var poly,测地线poly;
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:4,
中心:{
拉脱维亚:34,
液化天然气:-40.605
}
});
map.controls[google.maps.ControlPosition.TOP\u CENTER].push(
document.getElementById('info');
marker1=新的google.maps.Marker({
地图:地图,
真的,
职位:{
拉脱维亚:40.7127837,
液化天然气:-74.0059413
}
});
marker2=新的google.maps.Marker({
地图:地图,
真的,
职位:{
拉脱维亚:40.735657,
液化天然气:-74.1723667
}
});
var bounds=new google.maps.LatLngBounds();
extend(marker1.getPosition());
extend(marker2.getPosition())
映射边界(bounds);
google.maps.event.addListener(标记1,“位置改变”,更新);
google.maps.event.addListener(marker2,“位置改变”,更新);
poly=新的google.maps.Polyline({
strokeColor:“#FF0000”,
笔划不透明度:1.0,
冲程重量:3,
地图:地图,
});
更新();
}
函数更新(){
var path=[marker1.getPosition(),marker2.getPosition()];
poly.setPath(path);
var heading=google.maps.geometry.sphereal.computeHeading(路径[0],路径[1]);
document.getElementById('heading')。value=heading;
document.getElementById('origin')。value=path[0]。toString();
document.getElementById('destination')。value=path[1]。toString();
}
google.maps.event.addDomListener(窗口“加载”,initMap)
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

var bounds = new google.maps.LatLngBounds();
bounds.extend(marker1.getPosition());
bounds.extend(marker2.getPosition())
map.fitBounds(bounds);