是否有我不知道的OpenStreetMap/MapQuest托管的地图图块属性?

exi*_*t_1 1 java geocoding openstreetmap mapquest

我正在改变如何将我的地图图像从Google maps api获取到使用OpenStreetMap Data的MapQuest托管的地图图块.我正在切换谷歌地图,因为我达到了我没想到的每日请求限制,我没有使用OpenStreet api,因为虽然他们的数据是免费的,但他们的图块有一个限制,我只需要一个图像.因此,我在这里使用MapQuest托管的地图图块.

我想我理解它,但有些事情我希望能够做但却找不到任何文件.例如,如果可能的话,我想要一个500x300的图像尺寸,或者至少512*512(这是瓷砖出来的双256*256).我还希望能够显示标记.这可能吗?

我使用此处的代码将我的纬度和经度数据转换为x和y坐标:

 public class slippy {
 public static void main(String[] args) {
 int zoom = 9;
 double lat = 42.8549;
 double lon = -78.863;
 System.out.println("http://otile1.mqcdn.com/tiles/1.0.0/map/" + getTileNumber(lat, lon, zoom) + ".png");
 }
 public static String getTileNumber(final double lat, final double lon, final int zoom)    {
 int xtile = (int)Math.floor( (lon + 180) / 360 * (1<<zoom) ) ;
 int ytile = (int)Math.floor( (1 - Math.log(Math.tan(Math.toRadians(lat)) + 1 / Math.cos(Math.toRadians(lat))) / Math.PI) / 2 * (1<<zoom) ) ;
return("" + zoom + "/" + xtile + "/" + ytile);
}
}
Run Code Online (Sandbox Code Playgroud)

我使用此代码生成两个指向布法罗地图的链接; 一个缩放9,这里,一个10,这里,中心似乎不同.这是使用开源数据的结果还是我可以使用的属性?

sca*_*cai 5

当然中心不同.从一个缩放级别到下一个缩放级别,一个区块被"分割"成四个其他区块.因此,单个瓦片的中心将位于四个瓦片的角落处.使用上面提到的公式,您将始终获得包含坐标的图块.但由于瓷砖的性质,它不一定是瓷砖的中心.对于每个特定坐标,在给定缩放级别只有一个包含它的图块.因此,坐标可以是图块上的任何位置,而不一定是中心.

我还不太清楚你真正想要实现的目标.要显示切片(和标记),您需要做的就是使用LeafletOpenLayers(或任何其他支持切片概念的库).

请记住,MapQuest也有使用条款.

编辑:

另一种方法是使用WMS服务而不是TMS,它可以为您调整切片的大小和连接.使用WMS,您只需在中心周围定义边界框和图像大小.生成的图像将始终以坐标为中心.OSM wiki有一个OSM WMS服务器列表.

不要忘记了解您选择的WMS服务的使用政策.