2015-09-25 76 views
2

在當前實現中,我只是添加國家進行查詢,但此邏輯不正確。如何在Bing Maps中優先搜索國家/地區Ajax

$.ajax({ 
     url: 'https://dev.virtualearth.net/REST/v1/Locations/' 
     + searchString + ' ' + currentCountry + '?c=' + currentCulture + ..., 
     dataType: 'script' 
    }); 

但是,如果我試圖尋找出城currentCountry的,我會找到currentCountry,而不是搜索字符串。第二種方法 - 從查詢中刪除currentCountry,但它會導致另一個bug。 我不會currentCountry找到名氣不大的地方這個查詢的

Example: searchString = Moscow, currentCountry = USA. 

結果將是 - 莫斯科,俄羅斯,莫斯科沒有華盛頓特區

是否有指定搜索一些國家的能力? 搜索的第一次嘗試將在currentCountry中,如果失敗,那麼第二次將在全世界搜索。

回答

1

根據Find a Location by Address,您可以根據特定國家的一組地址值獲取緯度和經度座標。

實施例:

查詢:

http://dev.virtualearth.net/REST/v1/Locations/US/Moscow?o=xml&key=BingMapsKey 

注:結構化的URL指定(在此示例US)爲國家 位置數據作爲URL路徑的一部分。

將返回位於美國Moscow的位置。

+1

Yeap,它的工作原理。謝謝 –

0

如果你讀了Bing地圖,它實際上建議進行地理編碼時,因爲它會增加結果的準確性使用非結構化的URL格式,而不是結構化格式的最佳做法:https://msdn.microsoft.com/en-us/library/dn894107.aspx

爲了限制的結果,一個國家,簡單追加國家的查詢。

您的代碼很近,但應該有一個逗號,並且您將使用查詢參數,因爲您使用的格式是用於反向地理編碼座標。這裏是你的代碼的修改版本:

$.ajax({ 
     url: 'https://dev.virtualearth.net/REST/v1/Locations?q=' 
     + encodeURIComponent(searchString + ', ' + currentCountry) + '?c=' + currentCulture + ..., 
     dataType: 'script' 
    }); 

你也想查詢值編碼,以確保特殊字符不會引起任何問題。

+0

我想在目前的國家進行搜索,如果沒有任何結果,那麼搜索全世界。在查詢中添加currentCountry將會破壞這個邏輯,不是嗎? –

+0

如果您希望它搜索當前國家和地區,將會限制結果到一個國家/地區。如果沒有結果,您需要撥打第二個電話來搜索整個世界。或者,您可以隨時離開該國,從一開始就搜索整個世界,並獲得最大的結果和國家ISO返回,然後搜索那些具有所需國家/地區ISO的結果。 – rbrundritt

+0

第一種方法總是會返回澳大利亞的查詢=「singaphore,澳大利亞」,其次是更好,但它需要從我身邊採取額外的行動。Vadim的解決方案沒有任何可見的問題 –

相關問題