Что делает класс google.maps.Projection? - PullRequest
2 голосов
/ 25 апреля 2011

Недавно я обнаружил, что для преобразования между значениями LatLngs и пиксельными координатами на экране не следует использовать класс Projection , к которому легко получить доступ через Map.getProjection, но вместо этого я должен использовать MapCanvasProjection класс, к которому можно получить доступ только через OverlayView.

Последний вариант удобен и удобен, если вы работаете с пользовательским оверлеем, но если это не так, получить доступ к MapCanvasProjection очень больно. До сих пор я решил эту проблему для себя, добавив метод в класс Map, который предоставит мне легкий доступ к нужному классу проекции:

google.maps.Map.prototype.getCanvasProjection = function() {
  if (!this.projectionOverlay) {
    this.projectionOverlay = new google.maps.OverlayView();
    this.projectionOverlay.onAdd = function(){};
    this.projectionOverlay.onRemove = function(){};
    this.projectionOverlay.draw = function(){};
    this.projectionOverlay.setMap(this);
  }
  return this.projectionOverlay.getProjection();
};

Все это похоже на большой взлом, чтобы сделать что-то, что должно быть тривиальным. И это еще больше заставляет меня задуматься, что делает класс google.maps.Projection ? Когда я читаю документацию, мне кажется, что Projection.fromLatLngToPoint делает то же самое, что и MapCanvasProjection.fromLatLngToContainerPixel, но это не так. Я озадачен.

1 Ответ

3 голосов
/ 27 апреля 2011

Projection.fromLatLngToPoint означает преобразование широты и долготы в проекцию Меркатора. MapCanvasProjection выполняет проекцию на пиксель (включая Mercator).

...