城市范围内的限制标记android谷歌地图
Posted
技术标签:
【中文标题】城市范围内的限制标记android谷歌地图【英文标题】:Limit Marker within city limit android Google Maps 【发布时间】:2020-10-12 04:11:03 【问题描述】:我有一个要求,其中标记应该放在点击谷歌地图android中城市范围内的地图上。如果用户点击城市范围外的地图。需要显示警告。我知道可以在点击地图时添加标记,但我怎样才能将其限制在城市范围内?我尝试探索 GeoJson 的概念,以便在我的地图上方添加一个图层。但我不确定这会有什么帮助。任何建议表示赞赏。谢谢
【问题讨论】:
好吧,你可以检查纬度,经度是来自哪个城市,然后你可以比较各自是你想要限制的同一个城市,否则会发出警告。供参考:***.com/a/2296416/3989630 是否可以使用 GeoJSON 为城市绘制图层并限制标记? 我们可以在地图上为那个城市绘制折线,因为我们需要多个latlong。我会检查我们能否获得城市边界位置。 你能检查一下吗:***.com/a/31865958/3989630 这里人们正在获取各个城市的多边形,gis.stackexchange.com/a/284305 【参考方案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 中寻找一些构建方法。以上是关于城市范围内的限制标记android谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章