2016-07-11 9 views
0

私はリーフレットのライブラリを持つマーカーで地図を作成しています。GeoLocation - 地図を中心に

var mymap = L.map('mapid', { 
     center: [${mapCenter.lat}, ${mapCenter.lng}], 
     zoom: 9 
}); 

私は

 double minLatitude = Double.MAX_VALUE; 
     double maxLatitude = Double.MIN_VALUE; 

     double minLongitude = Double.MAX_VALUE; 
     double maxLongitude = Double.MIN_VALUE; 

     for (ViewMarker marker : markers) { 

      if (marker.getLng() > maxLongitude) { 
       maxLongitude = marker.getLng(); 
      } 

      if (marker.getLng() < minLongitude) { 
       minLongitude = marker.getLng(); 
      } 

      if (marker.getLat() > maxLatitude) { 
       maxLatitude = marker.getLat(); 
      } 

      if (marker.getLat() < minLatitude) { 
       minLatitude = marker.getLat(); 
      }      
     } 

     double centerLatitude =  (minLatitude + maxLatitude)/2; 
     double centerLongitude = (minLongitude + maxLongitude)/2; 

を表示するために私が持っているすべてのマーカーに基づいて、地図の中心を計算するためにしかし、あなたは画像で見るように、私はことを言わないだろう、このアルゴリズムを使用していますマップは

enter image description here

答えて

2

次いで、L.LatLngBoundsをインスタンスがマーカーLatLng Sを挿入し、中心部でmap.fitBounds()を実行します。

を提供するので、FeatureGroupを使用して、すべてのマーカーを内部に保持することもできます。

geodesyと地図投影の基礎を理解していない場合は、centerlat = (lat1 + lat2)/2のようなナイーブな解決法を使用しないでください。これは、デフォルトのMercator投影には当てはまりません。

関連する問題