我正在开发一个需要检索彼此相邻的地图的应用程序。 Google静态地图仅允许根据地址(地理编码)或中心(latLng)设置位置。我需要能够基于视口(左上角,左下角)或简单地将相邻地图获取到当前所拥有的地图。我试图根据当前的缩放级别和像素大小进行某种类型的数学运算以获得下一个中心但没有成功。
我的客户将获得营业执照,所以不要担心这些限制。
帮助的Thxs真的坚持这个。欢迎提出所有建议。
答案 0 :(得分:2)
在网上找到答案。结果谷歌地图使用墨卡托投影。在发现数学变得容易之后。我需要代码在确定的缩放级别上从像素转换为latlng。
这是java中的代码:
static final double OFFSET = 268435456;
static final double OFFSET_RADIUS = OFFSET / Math.PI;
static final double MATHPI_180 = Math.PI / 180;
static private final double preLonToX1 = OFFSET_RADIUS * (Math.PI / 180);
public static double LonToX(double lon) {
return Math.round(OFFSET + preLonToX1 * lon);
}
public static double LatToY(double lat) {
return Math.round(OFFSET - OFFSET_RADIUS * Math.log((1 + Math.sin(lat * MATHPI_180)) / (1 - Math.sin(lat * MATHPI_180))) / 2);
}
public static double XToLon(double x) {
return ((Math.round(x) - OFFSET) / OFFSET_RADIUS) * 180 / Math.PI;
}
public static double YToLat(double y) {
return (Math.PI / 2 - 2 * Math.atan(Math.exp((Math.round(y) - OFFSET) / OFFSET_RADIUS))) * 180 / Math.PI;
}
public static double adjustLonByPixels(double lon, int delta, int zoom) {
return XToLon(LonToX(lon) + (delta << (21 - zoom)));
}
public static double adjustLatByPixels(double lat, int delta, int zoom) {
return YToLat(LatToY(lat) + (delta << (21 - zoom)));
}
希望这有助于某人。
答案 1 :(得分:0)
使用Map类的方法getBounds
,getCenter
和getZoom
。