2015-01-06 138 views
2

我讀過這個API,並測試了很多座標的基礎上的一些例子 https://www.mapbox.com/developers/api/geocoding/如何使用反向地理編碼獲取Mapbox的城市/州/國家?

是給出了很多信息的例子,問題是有沒有簡單的方法來得到公正的城市,州和我能找到的國家。

http://api.tiles.mapbox.com/v4/geocode/mapbox.places/-114.0701,51.0495.json?access_token=pk.eyJ1IjoibWFyaXNhZmx5bm4iLCJhIjoibG9JcmhrbyJ9.yDc_eDeDW2DeM_JVSQPp7g

我能得到這樣的

了Mc精益,22102,弗吉尼亞州,美國

舊金山,94103,加利福尼亞州,美國

倫敦,SW1H6,市結果威斯敏斯特,英國

舊金山,94114,加利福尼亞州,美國

珀斯,6053,西澳大利亞,澳大利亞

的問題是,那麼我必須弄清楚如何解析出郵政編碼爲每個國家(不合理)。

我覺得http://api.tiles.mapbox.com/v4/geocode/mapbox.places/可能是錯誤的端點。我發現http://api.tiles.mapbox.com/v4/geocode/mapbox.places-country-v1/在一個點上,但它只會給國名。

任何指導如何從Mapbox反向地理編碼api查找獲取城市/州/國家數據?

回答

1

我結束了基於mapbox返回的這個函數。根節點給出城市/城市,然後給出它周圍的上下文。這是一個檢查哪個上下文是郵政編碼的問題,並且在重建字符串時排除該問題。

   //builds proper format of location string based on mapbox data. city,state/province,country 
       function parseReverseGeo(geoData) { 
        // debugger; 
        var region, countryName, placeName, returnStr; 
        if(geoData.context){ 
         $.each(geoData.context, function(i, v){ 
          if(v.id.indexOf('region') >= 0) { 
           region = v.text; 
          } 
          if(v.id.indexOf('country') >= 0) { 
           countryName = v.text; 
          } 
         }); 
        } 
        if(region && countryName) { 
         returnStr = region + ", " + countryName; 
        } else { 
         returnStr = geoData.place_name; 
        } 
        return returnStr; 
       } 
相關問題