我正在改變如何從Google Maps API獲取地圖圖像到使用OpenStreetMap Data的MapQuest託管的地圖圖塊。我從谷歌地圖切換,因爲我達到了我沒有預料到的每日請求限制,並且我沒有使用OpenStreet api,因爲雖然他們的數據是免費的,但它們的圖塊有限制,我只需要一張圖片。因此,我在這裏使用MapQuest託管的地圖圖塊。有沒有OpenStreetMap/MapQuest託管的地圖瓷磚屬性我不知道?
我想我明白這一點,但有些事情我希望能夠做到,但無法找到任何文檔。例如,如果可能的話,我希望圖像大小爲500x300,或者至少爲512 * 512(雙面256 * 256,這就是瓷磚的出現)。我也想能夠顯示一個標記。這可能嗎?
我用這個代碼中發現here到我的緯度和經度數據轉換爲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);
}
}
我用這個代碼來生成兩個鏈接到地圖水牛的;一個放大9,here,一個10,here,中心似乎有所不同。這是使用開源數據的結果還是有我可以使用的屬性?
我認爲混淆是返回地圖圖像的API和返回地圖圖塊的API之間的混淆。目的是用戶(你)將把這些「瓷磚」拼接在一起,例如在一張可愛的地圖上。 @scai建議使用Leaflet等,這將在web上下文中爲您完成。不知道是否有API提供任意大小的圖像... –
@DanS * WMSs *提供此功能。在閱讀您的評論之前,我沒有想過他們。 – scai