как использовать fromPointToLatLng на картах Google v3 - PullRequest
4 голосов
/ 16 сентября 2010

Это мой код:

var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map,'projection_changed', function () {
    var proj = map.getProjection();
    ltBound = proj.fromPointToLatLng(new google.maps.Point(0,100))
    rbBound = proj.fromPointToLatLng(new google.maps.Point(100,200))
    console.log(ltBound,rbBound)
});

Я хочу создать узел на Картах Google, но не могу использовать fromPointToLatLng на правильном пути. Что я могу сделать?

Ответы [ 2 ]

6 голосов
/ 30 мая 2015

Вот как я использую метод fromPointToLatLng (). Сначала вам нужно найти широту / долготу верхней левой точки на карте, а затем рассчитать смещение.

var pixelToLatlng = function(xcoor, ycoor) {
  var ne = map.getBounds().getNorthEast();
  var sw = map.getBounds().getSouthWest();
  var projection = map.getProjection();
  var topRight = projection.fromLatLngToPoint(ne);
  var bottomLeft = projection.fromLatLngToPoint(sw);
  var scale = 1 << map.getZoom();
  var newLatlng = projection.fromPointToLatLng(new google.maps.Point(xcoor / scale + bottomLeft.x, ycoor / scale + topRight.y));
  return newLatlng;
};

Попробуйте скрипку здесь: http://jsfiddle.net/mhaq865o/5/

Вы можете использовать метод fromPointToLatLng () или метод OverlayView, как описано здесь http://magicalrosebud.com/how-to-use-googlemaps-api-frompointtolatlng/

2 голосов
/ 16 октября 2013

Методы fromPointToLatLng и fromLatLngToPoint в Проекция выполняют преобразование между точками в системе координат 256x256 и координатами реального мира.

Вся карта Google имеет размер 256x256 пикселей, когда вы находитесь наУровень масштабирования 0. Попробуйте уменьшить масштаб и вывести точку, полученную при щелчке по карте:

google.maps.event.addListener(map, 'click', function(event) {
    var proj = map.getProjection();
    console.log('latLng: ' + event.latLng);
    console.log('Point:  ' + proj.fromLatLngToPoint(event.latLng));
});

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

Вы спрашиваете о добавлении «узла» на карту.Если вы думаете о том, что в документации называется «маркеры», посмотрите их раздел на маркерах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...