#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 сказал, что я не могу этого сделать.