获取带有可能位置(地址)的自动完成框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很多。
我认为您可以使用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;
}