0

我已附上我正在使用的 google API 的源代码。我创建了一个数组,其中包含我要查看的标记列表。我在网上找到了一个链接(http://blog.shamess.info/2009/09/29/zoom-to-fit-all-markers-on-google-maps-api-v3/),显示我可以使用fit bound 方法查看所有标记。我尝试实现它,但不能查看所有标记,但在我可以查看所有标记之前,现在我无法查看任何标记。如果有人能在这里指导我,我将不胜感激。我对js很陌生,所以如果我犯了一个非常愚蠢的错误,请原谅我。

function initApp() {
APIKey = {
'bing': '',
'leaflet': ''
};

console.log('app initialized');
startGeolocation();

 }


 /**
  *  google maps
   */

  // initialize the map
   function initGoogleMaps() {
    myLocation = new google.maps.LatLng(myLat, myLong);

   var mapOptions = {
zoom: 13,
center: myLocation,
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoomControl: true,
mapTypeControl: false,
streetViewControl: false
 };
 googleMap = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    }

    // search for nearby places
        function initGooglePlaces() {
       //searchForPlaces(googlePlacesCallback);
         findMe();

          }

         // search callback
            function googlePlacesCallback(results) {
          for(var i = 0; i < results.length; i++) {
            createGoogleMarker(results[i]);
      }
           }

           // create a marker / push-pin
            function createGoogleMarker(place) {
         var placeLoc = place.geometry.location;
            var marker = new google.maps.Marker({
           map: googleMap,
      position: place.geometry.location
          });
           }


        function multiMe(){ }
function findMe() {
var multiArray = new Array (5);
multiArray [0] = new Array(2);
multiArray [1] = new Array(2);
multiArray [2] = new Array(2);
multiArray [3] = new Array(2);
multiArray [4] = new Array(2);  
multiArray [0][0] = "43.9651";
multiArray [0][1] = "-78.8917";
multiArray [1][0] = "43.9551";
multiArray [1][1] = "-78.8917";
multiArray [2][0] = "43.9451";
multiArray [2][1] = "-78.8917";
multiArray [3][0] = "43.9351";
multiArray [3][1] = "-78.8917";
multiArray [4][0] = "43.951";
multiArray [4][1] = "-78.8917";
for(i=0; i<5; i++){
    var tLat =  multiArray [i][0];
    var tLong = multiArray [i][1];
    var newLatLng = new google.maps.LatLng(tLat,tLong );
    var bounds = new google.maps.LatLngBounds ();
    bounds.extend (newLatLng[i]);
    var marker = new google.maps.Marker({
        map: googleMap,
        position: newLatLng
    });
    map.fitBounds (bounds);
}
     }
         /**
          * search for POI
          */

       // example of seraching for places using google
      function searchForPlaces(callback) {
     var request = {
      location: myLocation,
      radius: 2000,
       types: ['bar']
       };

        infowindow = new google.maps.InfoWindow();
          var service = new google.maps.places.PlacesService(googleMap);
        service.search(request, callback);
        return;
        }

      /**
        *  geolocation
        */

       // we use HTML5 Geolocation to pin-point where the user is
      function startGeolocation() {
       var options;
        navigator.geolocation.getCurrentPosition(geoSuccess, geoFail, options);
        }

        // geolocation success callback
        function geoSuccess(position) {
         var gpsPosition = position;
        var coordinates = gpsPosition.coords;
        myLat = coordinates.latitude;
        myLong = coordinates.longitude;
        bb.pushScreen('google.html', 'google');
        }

        // geolocation failure callback
        function geoFail() {
       alert('Error getting your position. Using defaults instead');

         // set default position upon failure
       myLat = 44.465187;
       myLong = -80.522372;
       bb.pushScreen('google.html', 'google');
     }
4

1 回答 1

0

将 google.maps.LatLngBounds 视为一个矩形(4 个经纬度坐标确定它的边缘)。当您调用 bounds.extend(location) 时,您正在更改边界的边缘,以便该位置包含在矩形中。在您的情况下,您需要更改

for(i = 0; i < 5; i++){
var tLat =  multiArray [i][0];
var tLong = multiArray [i][1];
var newLatLng = new google.maps.LatLng(tLat,tLong );
var bounds = new google.maps.LatLngBounds ();
bounds.extend (newLatLng[i]);
var marker = new google.maps.Marker({
    map: googleMap,
    position: newLatLng

});

var bounds = new google.maps.LatLngBounds ();
for(i = 0; i < 5; i++){
var tLat =  multiArray [i][0];
var tLong = multiArray [i][1];
var newLatLng = new google.maps.LatLng(tLat,tLong );
bounds.extend (newLatLng[i]);
var marker = new google.maps.Marker({
    map: googleMap,
    position: newLatLng

});
于 2013-04-21T06:04:00.110 回答