0

私が使用しているGoogle APIのソースコードをここに添付しました。表示したいマーカーのリストを含む配列を作成しました。オンラインで使用できることを示すリンク ( http://blog.shamess.info/2009/09/29/zoom-to-fit-all-markers-on-google-maps-api-v3/ ) を見つけましたすべてのマーカーを表示するには、フィット バウンド メソッドを使用します。私はそれを実装しようとしましたが、すべてのマーカーを表示できるのではなく、すべてのマーカーを表示する前に表示できなくなりました。誰かが私をここに案内してくれれば、とてもありがたいです。私は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 に答える