基于PHP/MySQL的谷歌地图中缩放属性的自定义值不起作用


Custom value for zoom property in PHP/MySQL based Google Map is not working?

我正在尝试为我的网站制作基于PHP/MySQL的谷歌地图。我正在使用地图的缩放属性值7。

但加载后,地图缩放属性值不会反映在那里。它总是以详细的缩放显示地图。

我正在使用Twitter Bootstrap 3+进行设计。

在这里,我在下面添加我的代码-

<div id="map" style="width: 280px; height: 248px;"></div>
<script type="text/javascript">
  var locations = [
         ['<h4><?php echo $name; ?></h4>', <?php echo $lat;?>, <?php echo $lng; ?> ],
];
// Setup the different icons and shadows
var iconURLPrefix = 'http://maps.google.com/mapfiles/ms/icons/';
var icons = [
  iconURLPrefix + 'red-dot.png',
  iconURLPrefix + 'green-dot.png',
  iconURLPrefix + 'blue-dot.png',
  iconURLPrefix + 'orange-dot.png',
  iconURLPrefix + 'purple-dot.png',
  iconURLPrefix + 'pink-dot.png',      
  iconURLPrefix + 'yellow-dot.png'
]
var icons_length = icons.length;
var shadow = {
  anchor: new google.maps.Point(15,33),
  url: iconURLPrefix + 'msmarker.shadow.png'
};
var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 7,
  center: new google.maps.LatLng(<?php echo $lat;?>, <?php echo $lng; ?>),
  mapTypeId: google.maps.MapTypeId.ROADMAP,
  mapTypeControl: false,
  streetViewControl: false,
  panControl: false,
  zoomControlOptions: {
    position: google.maps.ControlPosition.LEFT_BOTTOM
  }
});
var infowindow = new google.maps.InfoWindow({
  maxWidth: 160
});
var marker;
var markers = new Array();
var iconCounter = 0;
// Add the markers and infowindows to the map
for (var i = 0; i < locations.length; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    icon : icons[iconCounter],
    shadow: shadow
  });
  markers.push(marker);
  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
  iconCounter++;
  // We only have a limited number of possible icon colors, so we may have to restart the counter
  if(iconCounter >= icons_length){
    iconCounter = 0;
  }
}
function AutoCenter() {
  //  Create a new viewpoint bound
  var bounds = new google.maps.LatLngBounds();
  //  Go through each...
  $.each(markers, function (index, marker) {
    bounds.extend(marker.position);
  });
  //  Fit these bounds to the map
  map.fitBounds(bounds);
}
AutoCenter();

我假设这个问题是由于CSS代码引起的,但不确定如何解决这个问题。

方法map.fitBounds将覆盖初始缩放值。如果你真的想定义缩放值,你可以从边界中获得中心值,然后用这个值设置地图的中心。

在AutoCenter()函数中,必须删除map.fitBounds(bounds)并包含var boundsCenter=bounds.getCenter();map.setCenter(boundsCenter);

function AutoCenter() {
  //  Create a new viewpoint bound
  var bounds = new google.maps.LatLngBounds();
  //  Go through each...
  $.each(markers, function (index, marker) {
    bounds.extend(marker.position);
  });
  //  Fit these bounds to the map
  // map.fitBounds(bounds);
  // This will get bounds center
  var boundsCenter = bounds.getCenter();
  // center map
  map.setCenter(boundsCenter);
}
AutoCenter();