4

Google マップの使用から leaflet.js に切り替えています。私がGoogleマップで行ったことがあり、leaflet.jsで見つけられないように見えることの1つは、マップの中心(検索場所)からマップの側面までの半径を計算することです。ズームインおよびズームアウトできるため、人々が見ている領域が大幅に変化する可能性があります。以下のコードは、Google マップでそれを行うために私が持っていた数行を示しています。誰かが leaflet.js に関して正しい方向に私を向けることができますか?

  // viewport stores the recommended viewport for the returned result.
  // (LatLngBounds)
  viewportLatLngBounds = zip.get("location").geometry.viewport;

  this.map.fitBounds(viewportLatLngBounds);

  this.collection.latitude = viewportLatLngBounds.getCenter().lat();
  this.collection.longitude = viewportLatLngBounds.getCenter().lng();

  // calculate radius
  // get distance..
  // from (lat of NE corner), (lng of center)
  // to   (lat of center), (lng of center)
  topCenterLatLng = new google.maps.LatLng(viewportLatLngBounds.getNorthEast().lat(), viewportLatLngBounds.getCenter().lng());

  metersRadius = google.maps.geometry.spherical.computeDistanceBetween(viewportLatLngBounds.getCenter(), topCenterLatLng);

  this.collection.radius = metersRadius / 1000;
  this.collection.radiusUnits = "km";
4

1 に答える 1

16

今後の参考のために:

getMapRadiusKM: function() {
    var mapBoundNorthEast = map.getBounds().getNorthEast();
    var mapDistance = mapBoundNorthEast.distanceTo(map.getCenter());
    return mapDistance/1000;
},
于 2013-01-03T19:25:35.893 に答える