javascript - 根据创建的点显示 map 中心

标签 javascript google-maps

所有, 我得到了一些要点来在我的数据 map 中创建一些标记。这是我显示 map 的代码:

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];

我想做的基本上是获取创建的所有点的平均值,以便它可以成为我的 map 的中心,这样它就会显示 map 中的所有点,而不是有时只显示其中的几个点。有人做过这样的事吗?

感谢您提前提供的任何帮助!

最佳答案

我猜您正在寻找google.maps.Map.fitBounds()

这应该有效:

<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>

关于javascript - 根据创建的点显示 map 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382514/

相关文章:

javascript - 当焦点位于 2 个文本框中的特定文本框时按下 Enter 键时发出警报消息

java - GoogleMaps v2 Android 的我的位置按钮,不显示

javascript - 在 Google map 上显示位置变化,无需一次又一次重新加载 map

Javascript:循环属性内的条件递增或递减

javascript - 环回警告 : scope User. accessTokens 目标类 "AccessToken",该类未通过远程处理公开

javascript - html 服务器控件复选框在 asp.net web 表单中由 jQuery 隐藏

javascript - 为什么每次我点击重放后我的 Sprite 都会加速一点?

ios - 无法使用 Google Map SDK 为 GMSPolyline 设置颜色

javascript - 如何检查两条路由是否共享路径

javascript - 谷歌地图覆盖不会定位在正确的标记上