API estática do Google Maps - obtenha SW e NE por coordenada central
Estou carregando blocos de mapas do Google Maps usando mapas estáticos, usando o .NET.
O problema que estou tendo é que eu não sei quais são as coordenadas SW e NE da imagem retornada.
Eu encontrei muitos exemplos de códigos diferentes, fórmulas, mas todos parecem ser falhos. Este é o que mais se aproximou da resposta correta. Quando entrei nas coordenadas do Google Maps, mostrei que estava um pouco errado.
var result = GoogleMapsAPI.GetBounds(new Coordinate(4.79635, 51.15479), 20, 512, 512);
public static class GoogleMapsAPI
{
public static MapCoordinates GetBounds(Coordinate center, int zoom, int mapWidth, int mapHeight)
{
var scale = Math.Pow(2, zoom);
var SWPoint = new Coordinate(center.X - (mapWidth / 2) / scale, center.Y - (mapHeight / 2) / scale);
var NEPoint = new Coordinate(center.X + (mapWidth / 2) / scale, center.Y + (mapHeight / 2) / scale);
return new MapCoordinates() { SouthWest = SWPoint, NorthEast = NEPoint };
}
}
public class MapCoordinates
{
public Coordinate SouthWest { get; set; }
public Coordinate NorthEast { get; set; }
}
public class Coordinate
{
public double Latitude { get; set; }
public double Longitude { get; set; }
public double X { get { return Latitude; } set { Latitude = value; } }
public double Y { get { return Longitude; } set { Longitude = value; } }
public Coordinate(double lat, double lng)
{
Latitude = lat;
Longitude = lng;
}
public override string ToString()
{
return X.ToString() + ", " + Y.ToString();
}
}
Fontes:
Como obter limites de um mapa estático do google?
http://www.easywms.com/easywms/?q=zh-hans/node/3612
Imagem carregada por coordenada central:
http://maps.googleapis.com/maps/api/staticmap?center=51.15479,4.79635&zoom=20&size=512x512&sensor=false