Что делает google.maps.Что делает класс Projection?

#google-maps #google-maps-api-3 #map-projections

#google-карты #google-maps-api-3 #карта-проекции

Вопрос:

Недавно я на собственном опыте убедился, что для преобразования между латиницами и координатами пикселей на экране мне не следует использовать класс 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:

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

Комментарии:

1. Хорошо, думаю, теперь я в основном понял. Спасибо.

2. Конечно, вот оно 🙂 Когда я попытался сделать это вчера, Stackoverflow сказал, что я не могу этого сделать.