Javascript 基于创建的点显示地图中心

Javascript 基于创建的点显示地图中心,javascript,google-maps,Javascript,Google Maps,全部,, 我得到了几个点来在我的数据地图上创建一些标记。以下是显示地图的代码: var map; var icon0; var newpoints = new Array(); function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function'){ window.onload = func } else { window.onload =

全部,, 我得到了几个点来在我的数据地图上创建一些标记。以下是显示地图的代码:

var map;
var icon0;
var newpoints = new Array();

function addLoadEvent(func) { 
var oldonload = window.onload; 
if (typeof window.onload != 'function'){ 
    window.onload = func
} else { 
    window.onload = function() {
        oldonload();
        func();
    }
}
}

addLoadEvent(loadMap);

function loadMap() {
map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng( <?php echo $_SESSION['pav_event_latitude']; ?>, <?php echo $_SESSION['pav_event_longitude']; ?>), 12);
map.setMapType(G_NORMAL_MAP);

icon0 = new GIcon();
icon0.image = "http://www.google.com/mapfiles/marker.png";
icon0.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon0.iconSize = new GSize(20, 34);
icon0.shadowSize = new GSize(37, 34);
icon0.iconAnchor = new GPoint(9, 34);
icon0.infoWindowAnchor = new GPoint(9, 2);
icon0.infoShadowAnchor = new GPoint(18, 25);

addPoints(myStores);
}

function addPoints( points )
{   
for ( var p = 0; p < points.length; ++p )
{
    var pointData = points[p];
    if ( pointData == null ) return; 
    var point = new GLatLng( pointData.latitude, pointData.longitude );
var marker = createMarker( point, icon0, pointData.html );
map.addOverlay( marker );
}
}

function createMarker(point, icon, popuphtml) {
var popuphtml = "<div id=\"popup\">" + popuphtml + "<\/div>";
var marker = new GMarker(point, icon);
GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(popuphtml);
});

function Store( lat, long, text )
{
this.latitude = lat;
this.longitude = long;
this.html = text;
}

var myStores = [<?php echo $jsData;?>, null];
var映射;
var icon0;
var newpoints=新数组();
函数addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!=“function”){
window.onload=func
}否则{
window.onload=函数(){
oldonload();
func();
}
}
}
addLoadEvent(loadMap);
函数loadMap(){
map=新的GMap2(document.getElementById(“map”);
addControl(新的GlargeMappControl());
addControl(新的GMapTypeControl());
地图设置中心(新格拉特林(,),12);
setMapType(G_NORMAL_map);
icon0=新的GIcon();
icon0.image=”http://www.google.com/mapfiles/marker.png";
icon0.shadow=”http://www.google.com/mapfiles/shadow50.png";
icon0.iconSize=新的GSize(20,34);
icon0.shadowSize=新的GSize(37,34);
icon0.iconAnchor=新的GPoint(9,34);
icon0.infoWindowAnchor=新的GPoint(9,2);
icon0.infoShadowAnchor=新的GPoint(18,25);
addPoints(myStores);
}
函数添加点(点)
{   
对于(var p=0;p
我想做的是基本上得到所有创建点的平均值,这样就可以成为我地图的中心,这样它就可以在地图上显示我的所有点,而不是有时只显示其中的几个点。有人做过类似的事情吗


提前谢谢您的帮助!

我想您正在寻找

这应该起作用:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
  </script> 
<script  type="text/javascript">
function addLoadEvent(func) { 
var oldonload = window.onload; 
if (typeof window.onload != 'function'){ 
    window.onload = func
} else { 
    window.onload = function() {
        oldonload();
        func();
    }
}
}

var map,
    infowin=new google.maps.InfoWindow({content:'moin'});
function loadMap() 
{
  map = new google.maps.Map(
    document.getElementById('map'),
    {   
      zoom: 12,
      mapTypeId:google.maps.MapTypeId.ROADMAP,
      center:new google.maps.LatLng(<?php echo $_SESSION['pav_event_latitude']; ?>, 
                                    <?php echo $_SESSION['pav_event_longitude']; ?>)
    });

  addPoints(myStores);
}

function addPoints( points )
{  
  var bounds=new google.maps.LatLngBounds();
  for ( var p = 0; p < points.length; ++p )
  {
    var pointData = points[p];
    if ( pointData == null ) {map.fitBounds(bounds);return; }
    var point = new google.maps.LatLng( pointData.latitude, pointData.longitude );
    bounds.union(new google.maps.LatLngBounds(point));
    createMarker( point,  pointData.html );
  }
  map.fitBounds(bounds);

}

function createMarker(point,  popuphtml) 
{
  var popuphtml = "<div id=\"popup\">" + popuphtml + "<\/div>";
  var marker = new google.maps.Marker(
    {
      position:point,
      map:map
    }
  );
  google.maps.event.addListener(marker, 'click', function() {
      infowin.setContent(popuphtml)
      infowin.open(map,marker);
    });

}
function Store( lat, long, text )
{
this.latitude = lat;
this.longitude = long;
this.html = text;
}



var myStores = [<?php echo $jsData;?>, null];
addLoadEvent(loadMap);
</script>

函数addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!=“function”){
window.onload=func
}否则{
window.onload=函数(){
oldonload();
func();
}
}
}
var映射,
infowin=newgoogle.maps.InfoWindow({content:'moin});
函数loadMap()
{
map=新建google.maps.map(
document.getElementById('map'),
{   
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:新google.maps.LatLng(,
)
});
addPoints(myStores);
}
函数添加点(点)
{  
var bounds=new google.maps.LatLngBounds();
对于(var p=0;p
如果你想显示所有点,为什么不设置一个边界框而不是一个中心点?@alex如果我有多个横向/纵向坐标,我如何确保它适合所有的横向/纵向坐标?@DrMolle如果我有多个横向/纵向坐标,我如何确保它适合所有的横向/纵向坐标?上面的例子可以做到这一点(现有的addPoints函数可能会被它取代)。它接受一个初始LatLngBounds,并用每个给定点对其进行扩展,结果将是一个LatLngBounds对象,该对象包含2个点,定义了一个矩形,其中所有给定点都放置在其中。由此产生的LatLngBounds将作为参数传递给fitBounds()谢谢。但是如何更新loadMap()函数,使其以正确的方式加载。我尝试注释掉map.setCenter(新GLatLng(,),12),但它们没有显示映射。您不需要修改loadMap()。如果不希望映射的初始中心也成为边界的一部分,请提供
map.getCenter()
作为初始边界的参数(我已在上面的代码中应用了此参数)。效果更好,但我还有一个问题。如何在此基础上设置缩放?现在我已将其设置为11,但如果它们都靠近我的地图中心,我是否可以将其放大?