我想在 skobbler 中使用字符串搜索地点。就像位智一样,当我搜索“美国洛杉矶环球影城”时,搜索环球影城的地理点就会给我。提前致谢。
问问题
616 次
2 回答
3
目前 SDK 提供 2 种搜索方式:
- 地址(地理编码) - 通过 MultiStepSearch 组件http://developer.skobbler.com/getting-started/android#sec019
- 附近的 POI - 通过 NearBySearch 组件http://developer.skobbler.com/getting-started/android#sec020
如果我理解正确,您正在寻找“单行搜索”组件(在一行中输入您的查询并回车) - 这是 SDK 目前未公开的内容(我们正在努力,11 月我们应该有新的事态发展)。
于 2014-09-29T05:37:06.387 回答
0
好吧,我认为您实际上并不需要使事情复杂化并为此依赖 Skobbler,您可以使用 Android 原生地理编码 API。结果相当准确。
请注意,以下在 UI 线程上运行,您可能希望将其放在 AsyncTask 或其他任何东西上。
private void geocode (String address) {
String baseUrl = "";
String [] splitAddress = address.split ("[,\\s\\-:\\?]");
for (int i = 0; i < splitAddress.length; i++) {
if (i != 0) {
baseUrl += "+";
}
baseUrl += splitAddress [i];
}
if (NetUtils.isOnline (MyActivity.this)) {
Geocoder geocoder = new Geocoder (MyActivity.this);
try {
ProgressView.show (MyActivity.this, true);
List<Address> addresses = geocoder.getFromLocationName (baseUrl, 1);
if (addresses != null && addresses.size() > 0) {
Address addressResult = addresses.get (0);
Log.e (MyActivity.this.class.getSimpleName () + " -- Address Found", address + " : " + addressResult.getLatitude () + " : " + addressResult.getLongitude());
launchRouteCalculation (addressResult.getLatitude (), addressResult.getLongitude ());
} else {
PopupUtils.show (MyActivity.this, null, "Could not find the destination.");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
ProgressView.dismiss ();
}
}
于 2016-09-26T10:34:07.793 回答