【问题标题】:Limit Marker within city limit android Google Maps城市范围内的限制标记android谷歌地图
【发布时间】:2020-10-12 04:11:03
【问题描述】:

我有一个要求,其中标记应该放在点击谷歌地图android中城市范围内的地图上。如果用户点击城市范围外的地图。需要显示警告。我知道可以在点击地图时添加标记,但我怎样才能将其限制在城市范围内?我尝试探索 GeoJson 的概念,以便在我的地图上方添加一个图层。但我不确定这会有什么帮助。任何建议表示赞赏。谢谢

【问题讨论】:

  • 好吧,你可以检查纬度,经度是来自哪个城市,然后你可以比较各自是你想要限制的同一个城市,否则会发出警告。供参考:stackoverflow.com/a/2296416/3989630
  • 是否可以使用 GeoJSON 为城市绘制图层并限制标记?
  • 我们可以在地图上为那个城市绘制折线,因为我们需要多个latlong。我会检查我们能否获得城市边界位置。
  • 你能检查一下吗:stackoverflow.com/a/31865958/3989630
  • 这里人们正在获取各个城市的多边形,gis.stackexchange.com/a/284305

标签: android android-studio google-maps google-maps-markers geojson


【解决方案1】:

基于此link,我可以获取特定城市的多边形。这些值存储到 DB 并使用 API 获取。 API 返回城市的 lat lng 边界,使用它我可以绘制城市形状的多边形。

val polygon = googleMaps?.addPolygon(PolygonOptions()
            .addAll(cityLimit)) // cityLimit LatLng list of City Boundary
    polygon?.isClickable = false
    polygon?.strokeWidth = 2f

然后在MapClick上,我添加了以下条件

    override fun onMapClick(latLng: LatLng?) {
        if (!PolyUtil.containsLocation(latLng, cityLimit, false))
            // Show error message "Unable to place marker outside city limit"
    }

PolyUtil 是 Google Maps sdk 的类库。这解决了我的问题。更多详情请查看blog

【讨论】:

    【解决方案2】:

    您应该在您希望用户选择的区域周围创建一个地理围栏。然后你可以评估它是否在城市边界内。

    在城市周围有一个 10000 米的地理围栏,如果用户单击地图并发现它不在地理围栏内,则取消请求,但如果它在边界内,则创建标记

    【讨论】:

    • 地理围栏在这里无济于事。不同的城市有不同的半径。很难找出城市半径。我正在从 Maps sdk 中寻找一些构建方法。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2016-10-14
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多