2014-02-06 141 views
0

我正在開發一個PHP的Web服務,它以緯度,經度和半徑爲公里並生成google static map
Google靜態地圖半徑要縮放

此外,我還顯示我的數據庫在該半徑的所有點。

我的問題是,我可以在谷歌的zoom參數中隱藏我的radius以確保所有點在地圖上可見?

類似:http://maps.googleapis.com/maps/api/staticmap?center=New+York,NY&[*THIS PARAMETER*zoom=13]&size=600x300&markers.......

回答

2

截至Google Maps Documentation說:

由於基本的墨卡託谷歌地圖圖塊256 x 256像素。
另請注意,每個縮放級別的地圖都有2個n瓦片。

這意味着在zoomLevel 2時,地圖任何方向的像素都是= 256 *2²= 1024px。

考慮到地球具有〜40000公里的周界,在變焦0,每個像素〜=40000公里/ 256 =156.25公里
在變焦9,像素131072:
1px的=40000公里/ 131072 = 0.305公里...等等。

如果您的圖像是640 x 640像素,並且您正在使用縮放9,這意味着您將覆蓋〜640 * 0.305〜= 195km。所以你的半徑大約是100公里。
每次縮放++時,半徑都是一半。

如果使用縮放15(1px = 0.00478km),則圖像將覆蓋〜3km寬(半徑1.5km)。

考慮到隨着你越往北或南越遠,實際距離越小,因爲失真越大。

您可以將zoom = Floor(日誌(EarthP * 2 PixMap /(256 * radius)))作爲參數使用。在這個緯度(公里)

  • 像素圖=地圖的像素,你會顯示
  • 半徑爲半徑要顯示在​​圖像(公里)
    • EarthP =地球周長登錄 =對數在基地2

    注:轉換日誌到常規日誌只是使這一點:
    樓((日誌(EarthP * 2像素圖/(256 *半徑)))/日誌2)Logarithms in Wikipedia

  • 0

    看一看的LatLngBounds和map.fitBounds方法... Google maps api

    +0

    這是很好的JavaScript

    參考,但我需要它通過在URL中。 – NickF

    +0

    好的,對不起。據我記得,我認爲如果你定義了標記並且不提供「縮放」,那麼地圖將自動包含所有點。 (如果你沒有標記,你必須提供'縮放') – TonyWilk