Карты Google ограничивают минимальное увеличение - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть простая карта Google, которая заполняет всю страницу.Вот пример:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Marker Animations</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var stockholm = new google.maps.LatLng(59.32522, 18.07002);
  var map;

  function initialize() {
    var mapOptions = {
      zoom: 0,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: stockholm
    };

    map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);

   google.maps.event.addListener(map, 'idle', function() {
      var b = map.getBounds();
      document.getElementById("bounds").innerText = b.getSouthWest().lng() + ", " + b.getNorthEast().lng();
   });

  }
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 100%; height: 100%;">map div</div>
<div id="bounds" style="left: 100px; top: 0px; width: 300px; height: 30px; position: absolute; background-color: #a0a0a0;"></div>
</body>
</html>

На МИНИМАЛЬНОМ уровне масштабирования, когда вы можете увидеть несколько карт мира, я ожидаю, что границы долготы будут -180 - 180, но на самом деле я не понимаю.Мои ожидания неверны и почему?

В реальном приложении у меня есть серверный код, который выбирает маркеры из базы данных в зависимости от границ текущей карты.

1 Ответ

2 голосов
/ 15 марта 2012

Границы будут сообщать широту и долготу в границах окна - даже если карта была несколько раз обернута.Итак, что бы ни было, ширина нижней правой части вашего окна будет одной точкой, а верхняя левая будет другой.

У меня была такая же проблема, и в итоге я создал границы мира, которые составляли от 90, 180 до -90, -180, и затем посмотрел, подходит ли это окно.

var ne = new google.maps.LatLng(90, 180);
var sw = new google.maps.LatLng(-90, -180)
var world = new google.maps.LatLngBounds(ne, sw);
var fetchbounds;
if(map.getBounds().contains(ne) && map.getBounds().contains(sw)){
    fetchBounds = world;
}else{
    fetchBounds = map.getBounds();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...