Если у вас есть объект LatLng, вы можете использовать объект проекции карты Google, чтобы преобразовать его в координаты плитки, а затем в пиксельные координаты:
Для документов по классу проекции:
https://developers.google.com/maps/documentation/javascript/reference#Projection
Пример Google, объясняющий, как преобразовать LatLng в пиксельную координату:
https://developers.google.com/maps/documentation/javascript/examples/map-coordinates?csw=1
Есть одна загвоздка. Вышеприведенное даст вам пиксельные координаты внутри div карты Google (который может потребоваться в зависимости от ваших потребностей). Если вы хотите, чтобы пиксели относились к верхнему левому углу экрана, есть еще один шаг. Вы должны сделать ту же проекцию в верхнем левом углу окна просмотра и вычесть их. Это даст вам пиксельные координаты точки LatLng.
Код, который я наконец-то использовал, выглядел следующим образом (обратите внимание, что «latLng» является вводом):
var numTiles = 1 << map.getZoom();
var projection = map.getProjection();
var worldCoordinate = projection.fromLatLngToPoint(latLng);
var pixelCoordinate = new google.maps.Point(
worldCoordinate.x * numTiles,
worldCoordinate.y * numTiles);
var topLeft = new google.maps.LatLng(
map.getBounds().getNorthEast().lat(),
map.getBounds().getSouthWest().lng()
);
var topLeftWorldCoordinate = projection.fromLatLngToPoint(topLeft);
var topLeftPixelCoordinate = new google.maps.Point(
topLeftWorldCoordinate.x * numTiles,
topLeftWorldCoordinate.y * numTiles);
return new google.maps.Point(
pixelCoordinate.x - topLeftPixelCoordinate.x,
pixelCoordinate.y - topLeftPixelCoordinate.y
)