我正在更改如何从 Google 地图 api 获取地图图像到使用 OpenStreetMap 数据的 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);
}
}
我使用此代码生成了两个指向 Buffalo 地图的链接;一个缩放为 9, here和一个缩放为 10 , here和中心似乎不同。这是使用开源数据的结果还是我可以使用的属性?