获取带有可能位置(地址)的自动完成框Windows手机

本文关键字:手机 Windows 有可能 位置 地址 获取 | 更新日期: 2023-09-27 18:24:44

几天后,我在网上搜索了一个解决方案。我想要实现的是一个自动完成的搜索框,它在最后给出了搜索地址或地点的经度和纬度。

所以我有了我需要的东西,问题是,图像已经不见了,所以我被卡住了。

  • 如何将文本框的内容发送到我的位置api url(在我的TextChange事件处理程序中)

  • 如何在事件处理程序中读取json响应并将其绑定到我的LisBox项?

  • 最后一点,我如何获得所选项目的经度和纬度,这样我就可以处理它了?

这里是事件处理程序和xaml代码

private void SearchForTerm(object sender, System.Windows.Controls.TextChangedEventArgs e)
    {
        //??
    }
<TextBox 
      Foreground="Gray" 
      Text="Search Location"
      TextWrapping="Wrap" 
      Margin="0,470,0,0" 
      Height="72" 
      VerticalAlignment="Top" 
      AcceptsReturn="True" 
      GotFocus="TextBox_GotFocus"
      LostFocus="TextBox_LostFocus" 
      TextChanged="SearchForTerm"
      />
<ListBox x:Name="Suggestion_listbox" 
         Margin="12,65,0,179">
</ListBox>

thx很多。

获取带有可能位置(地址)的自动完成框Windows手机

我认为您可以使用WPToolkit中的AutoCompleteBox,这将非常方便和易于使用。有很多关于这方面的教程,这里是一个。

如果您想在每次文本更改事件后获得结果,那么您可以使用更改后的文本使用WebClient调用该Web服务。我不确定这个位置api,但这里有一个从OpenWeatherMapAPI获取当前天气信息的例子。你也可以在你的案例中使用它来获取数据。

WebClient wc = new WebClient();
wc.DownloadStringCompleted+=wc_DownloadStringCompleted;
wc.DownloadStringAsync(new Uri("http://api.openweathermap.org/data/2.5/weather?q="+location +"&units=metric",UriKind.Absolute));

在从web服务获得响应后,您可以使用JSON.NET反序列化JSON响应。要将JSON响应映射到c#类,可以使用此web工具-json2csharp。这是我的示例中的DownloadStringCompleted事件处理程序。

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
     if (!string.IsNullOrEmpty(e.Result))
     {
            WeatherData weatherDt = JsonConvert.DeserializeObject<WeatherData>(e.Result);
     }
}

这里WeatherData是Json响应的根对象。您可以使用JsonConvert.DescializeObject(e.Result)将json响应映射到WeatherData对象;

要列出DataBinding,请参阅此问题的解决方案。

要将所选项目作为对象获取,可以使用Tap事件处理程序。

 private void Suggestion_listbox_Tap(object sender, System.Windows.Input.GestureEventArgs e)
 {
        ListBox list = sender as ListBox;
        ClassName obj = list.SelectedItem as ClassName;
 }