【问题标题】:Determining optimal zoom level for a geocoded address on Android Map v2在 Android Map v2 上确定地理编码地址的最佳缩放级别
【发布时间】:2013-08-01 23:23:09
【问题描述】:

我正在开发一个 Android 应用程序。在其中一个视图上,用户可以键入一个地址(不太可能在 Google 地图中键入)并从反向地理编码地址列表中选择结果。 地理编码通过 Geocoder 类(android.location.Geocoder 类)使用 getLocationFromName 方法进行。 然后我使用 Lat/Lng 通过 CameraPosition.Builder().target(pos) 移动 GoogleMap 相机,但我没有提示使用哪个 zoomLevel。

客户要求我复制与 Android 上的地图应用程序类似的行为,通常是这样的:

  • 如果我搜索像“意大利米兰”这样的城镇,地图会以城镇为中心并进行缩放,以便可以看到大部分城镇。
  • 如果我搜索一条没有编号的道路(可能很长),例如“Viale Fulvio Testi,Milano,Italy”,地图会在道路上放大,大部分时间会绘制整条道路(或大部分道路) ) 在屏幕上可见。
  • 如果我还加上门牌号(例如“Viale Fulvio Testi 1, Milano, Italy”),缩放甚至可能更大一些。 *

我在地图上没有标记,也不必显示当前用户位置。只是输入的位置。

关于如何复制 GMap 行为的任何建议?

谷歌地图似乎可以将“区域”与给定地址相关联,确定该区域的一种“边界框”,然后确保该区域在地图上完全可见,但目前似乎我无法找出与结果相关的任何区域。

想到的另一个想法(快速和肮脏)是检查各种 android.location.Address 字段(featureName,subLocality,locality,...),将缩放级别与每个字段相关联,并根据哪个字段确定缩放级别存在,但这可能是不精确的:寻找小城镇可能会导致放大到大,否则,大城镇可能不适合屏幕......

【问题讨论】:

    标签: android google-maps android-maps-v2


    【解决方案1】:

    您可以使用Google Geocoding API,它返回您正在寻找的边界框,例如:

    http://maps.google.com/maps/api/geocode/json?address=Viale+Fulvio+Testi,+Milano,+Italy&sensor=false

    返回

            "bounds" : {
               "northeast" : {
                  "lat" : 45.52959160,
                  "lng" : 9.21414790
               },
               "southwest" : {
                  "lat" : 45.50122050,
                  "lng" : 9.197628699999999
               }
            },
    

    【讨论】:

    • 谢谢。认为这可能是解决方案,但我想避免使用未通过 Android 类公开的其他 API。我不认为我可能会受到 API 使用限制,但如果发生这种情况,我可能会同时阻塞多个终端......
    • @LMollea 此 API 使用限制是每个 IP。
    • 我知道。但是在移动网络上,总是存在设备 IP 被 NAT 和 Google 看到有限的公共 IP 范围的风险......
    • @LMollea 除了购买营业执照或为此寻找其他 Web api 之外,您无能为力。我认为 Geocoder 使用具有相同限制的相同 API。
    • Maciej 的建议很好。您可能想从您自己的服务器查询地理编码 API - 这也很棒,因为您可以只将必要的信息发送到您的移动应用程序并执行服务器端缓存。如果没有密钥,则限制为每天 2,500 个地理编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多