【问题标题】:Android CLPlacemark.ocean equivalent or how to get extra data from locationAndroid CLPlacemark.ocean 等效项或如何从位置获取额外数据
【发布时间】:2015-02-25 12:51:53
【问题描述】:

我正在为 Android 和 iOS 计划一个典型的路线应用程序,但有些东西我无法在 Android 上复制。在 iOS 中,您可以使用 CLPlacemark.ocean 和 CLPlacemark.inlandWater 获取有关地图中特定点的一些额外信息。这两个属性表明该点是否在水面上,在这种情况下,是该水体的名称(河流 X​​、湖泊 Y 或海洋 Z)

Google Maps API 或 Android SDK 中是否有可能接近这一点的东西?如果我能分辨水和地,我会很高兴的。

提前致谢!

P.S:如果 iOS 标签不合适,请见谅。

【问题讨论】:

    标签: android ios google-maps geolocation


    【解决方案1】:

    CLPlacemark 是一个 iOS 类,所以你不能在 Android 中使用这个类。

    Android 有一个Geocoder 类,它可以返回Address 对象的列表。但是Address 类没有方法来判断一个位置是否在海洋中。

    一种方法是使用 Google Maps Geocoding API。如果您的地址在陆地上,则响应的 result_type 将类似于“administrative_area”。如果您在海中,响应将是“natural_feature”。你可以从这个its documentation看到返回类型。

    但是Geocoding API是一个Javascript API,如果你想在Android中使用它,你可以做一个HTTP URL请求,示例请求:

      URL requestUrl = new URL("https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=API_KEY" );
     HttpURLConnection connection = (HttpURLConnection)requestUrl.openConnection();
     connection.setRequestMethod("GET");
     connection.connect();
    

    然后您可以解析 JSON 响应,并找出某个位置是否在海洋中。或者,您可以使用 Google 的 Java 客户端库来满足您的要求,示例用法:https://developers.google.com/maps/documentation/webservices/client-library#usage

    您可以从这些 SO 答案中找到有关使用 Geocoding API 来确定看到或着陆的更多信息:

    https://stackoverflow.com/a/3645696/4195406

    https://stackoverflow.com/a/9644812/4195406

    【讨论】:

    • 感谢 ztan 的提示。我将比较不同位置的 XML,看看我能从中得到什么。我看到它们上有不同的节点。
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多