又见面了,虽然我对你帮助不大,毕竟你还是选我正确答案了,那我就在给你提点帮助不大的建议。
根据地理坐标建立瓦片地图会比较好些。下面是转换方法
//将tile(瓦片)坐标系转换为lnglat(地理)坐标系public static Lnglat toLnglat(Tile tile) {
double n = Math.pow(2, tile.getZoom())
double lng = tile.getX() / n * 360.0 - 180.0
double lat = Math.atan(Math.sinh(Math.PI * (1 - 2 * tile.getY() / n)))
lat = lat * 180.0 / Math.PI
return new Lnglat(lng, lat)
}
//将lnglat地理坐标系转换为tile瓦片坐标系
public static Tile toTile(int zoom, Lnglat lnglat) {
double n = Math.pow(2, zoom)
double tileX = ((lnglat.getLng() + 180) / 360) * n
double tileY = (1 - (Math.log(Math.tan(Math.toRadians(lnglat.getLat())) + (1 / Math.cos(Math.toRadians(lnglat.getLat())))) / Math.PI)) / 2 * n
return new Tile(new Double(tileX).intValue(), new Double(tileY).intValue(), zoom)
}
缩放级别决定了地图瓦片的数量。当缩放级别为0时,瓦片数量为1,缩放级别2时,瓦片数量为4,缩放级别为3时,瓦片数量为8,也就是Math.Pow(2, Zoom)2的缩放级别次方。而缩放级别据我手动尝试,最高可以达到22。
瓦片是根据从上到下、从左到右的原则来编号的。
以上就是我整理的。希望对你有帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)