2015-07-31 1 views
0

Я создал приложение WPF для поиска местоположений из введенного ключевого слова. Для этого я использовал bing maps service api мой код:Поиск предложенных адресов из ключевого слова в службе поиска bing

private object SearchKeywordLocation(string keywordLocation) 
    { 
     String results = ""; 
     SearchRequest searchRequest = new SearchRequest(); 

     // Set the credentials using a valid Bing Maps key 
     searchRequest.Credentials = new SearchService.Credentials(); 
     searchRequest.Credentials.ApplicationId = "my key"; 

     //Create the search query 
     StructuredSearchQuery ssQuery = new StructuredSearchQuery(); 
     string[] parts = keywordLocation.Split(';'); 
     ssQuery.Keyword = parts[0]; 
     ssQuery.Location = parts[1]; 
     searchRequest.StructuredQuery = ssQuery; 

     //Define options on the search 
     searchRequest.SearchOptions = new SearchOptions(); 
     searchRequest.SearchOptions.Filters = 
      new FilterExpression() 
      { 
       PropertyId = 3, 
       CompareOperator = CompareOperator.GreaterThanOrEquals, 
       FilterValue = 8.16 
      }; 

     //Make the search request 
     SearchServiceClient searchService = new SearchServiceClient("BasicHttpBinding_ISearchService"); 
     SearchResponse searchResponse = searchService.Search(searchRequest); 

     //Parse and format results 
     if (searchResponse.ResultSets[0].Results.Length > 0) 
     { 
      StringBuilder resultList = new StringBuilder(""); 
      for (int i = 0; i < searchResponse.ResultSets[0].Results.Length; i++) 
      { 
       resultList.Append(String.Format("{0}. {1}\n", i + 1, 
        searchResponse.ResultSets[0].Results[i].Name)); 
      } 

      results = resultList.ToString(); 
     } 
     else 
      results = "No results found"; 

     return results; 
    } 
} 

для этого приложения. Я получаю результаты, когда я звоню SearchKeywordLocation("sushi; Arvada, CO");, но мое требование - получить результаты, когда я звоню SearchKeywordLocation("new"); Мне нужно получить результаты, связанные с новым йорком. это конкретное форматирование строк следует избегать. Что я здесь делаю неправильно?

ответ

0

Служба поиска предназначена для точек интереса, а не адресов. Нью-Йорк относится к категории адресов и является тем, что должно быть передано через службу геокодирования. Тем не менее, переход в «Новый» на любой из сервисов в отличие от того, чтобы получить желаемый результат, поскольку есть миллионы возможных результатов, которые имеют слово «новое» в их имени. Учитывая это, геокодер, скорее всего, определит, что это плохо сформированный запрос и ограничивает возможные результаты лишь несколькими (тестирование «новых результатов« Я вижу 5 », Нью-Йорк не был одним из них).

При этом следует также избегать использования старых устаревших SOAP-сервисов. Они приближаются к концу жизни, и документация была снята в автономном режиме несколько лет назад. Фактически, мы перестали рекомендовать SOAP-услуги около 5 лет назад, и они сохраняли их только для клиентов, у которых на них работают старые приложения. 5 лет назад эти службы были заменены службами Bing Maps, которые имеют намного больше функций и функций, намного быстрее, имеют меньшие объекты ответа и, как правило, возвращают более точные результаты. Вы можете найти документацию по использованию REST услуг здесь: https://msdn.microsoft.com/en-us/library/ff701713.aspx

Вот некоторые документы об использовании их в .NET: https://msdn.microsoft.com/en-us/library/jj819168.aspxI

Я также работал над созданием хорошей библиотеки .NET, которая оборачивает свои услуги упростить их использование в этих типах приложений. Если вы заинтересованы в тестировании, пришлите мне письмо по адресу ricky_brundritt на Hotmail.com, и я пришлю вам копию библиотеки.

Смежные вопросы