1

我想在 skobbler 中使用字符串搜索地点。就像位智一样,当我搜索“美国洛杉矶环球影城”时,搜索环球影城的地理点就会给我。提前致谢。

4

2 回答 2

3

目前 SDK 提供 2 种搜索方式:

如果我理解正确,您正在寻找“单行搜索”组件(在一行中输入您的查询并回车) - 这是 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 回答