LatLngBounds - как получить баллы SW и NE

Я пытаюсь использовать Google Maps & apos; автозаполнение и смещение результатов вLatLngBounds, Я хотел бы иметь возможность нарисовать прямоугольник вокруг острова (скажем, на Гавайских островах) и таким образом получить границы границ. Есть ли какой-нибудь инструмент, который я могу использовать, чтобы помочь мне?

Ответы на вопрос(2)

у которого нет проблем с анти-меридианом: http://maps.forum.nu/gm_drag_polygon.html

Марсело.

Решение Вопроса

зования. Это просто слушатели карты и прямоугольника.

http://jsfiddle.net/yV6xv/16/embedded/result/

чтобы увидеть код:

http://jsfiddle.net/yV6xv/16/

Чтобы использовать его, сначала увеличьте масштаб и передвиньте вручную на свой остров. Вся область, которую вы хотите выделить, должна быть видна на экране.

Затем нажмите один раз, чтобы определить угол прямоугольника. Переместите мышь к диагонально противоположному углу. (Прямоугольный выбор появится). Нажмите еще раз, чтобы определить прямоугольную область. Текстовое поле над картой должно дать вам выбранные LatLngBounds с точками SW и NE.

Он просто не ведет себя так, как ожидалось, при попытке содержать международную строку даты.

  var map;

  var mapOptions = {
    center: new google.maps.LatLng(0.0, 0.0),
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var bounds;
  var pt1, pt2;
  var rect;

  function toLatLng(lat, lng) {
    return new google.maps.LatLng(lat, lng);
  }

  function toBounds(j,k) {
    var pts = [];
    var latMin, latMax, lngMin, lngMax;
    var sw, ne;

    latMin = Math.min(j.lat(), k.lat());
    latMax = Math.max(j.lat(), k.lat());

    lngMin = Math.min(j.lng(), k.lng());
    lngMax = Math.max(j.lng(), k.lng());

    sw = toLatLng(latMin, lngMin);
    ne = toLatLng(latMax, lngMax);
    return new google.maps.LatLngBounds(sw, ne);
  }

  function initialize() {
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    rect = new google.maps.Rectangle({
      fillColor: "#FFFF00",
      fillOpacity: 0.3,
      strokeColor: "#0000FF",
      strokeWeight: 2
    });

    // Activate the box
    google.maps.event.addListener(map, 'click', function(event) {
      pt1 = event.latLng;
      rect.setMap(map);
    });

    // Modify the box's size
    google.maps.event.addListener(map, 'mousemove', function(event) {
      if(rect.getMap() == map) {
        rect.setBounds(toBounds(pt1, event.latLng));
      }
    });

    // Remove the zoom window and zoom in
    google.maps.event.addListener(rect, 'click', function(event) {
      rect.setMap(null);
      pt2 = event.latLng;
      myBounds = toBounds(pt1, pt2);

      document.getElementById("selectedBounds").value = "new google.maps.LatLngBounds(new google.maps.LatLng" + myBounds.getSouthWest() + ", new google.maps.LatLng" + myBounds.getNorthEast() + ");";
    });

    // Allows shrinking the box
    google.maps.event.addListener(rect, 'mousemove', function(event) {
      if(rect.getMap() == map) {
        rect.setBounds(toBounds(pt1, event.latLng));
      }
    });
  }

HTML

<textarea id="selectedBounds" cols="60" rows="4"></textarea>
<div id="map_canvas"></div>​

Ваш ответ на вопрос