【发布时间】:2020-04-08 08:17:34
【问题描述】:
有任务开发应用程序,世界地图上覆盖着多边形,并且某些区域应该“启用”。为此,我在那个“世界”多边形中创建了洞。
这是使用谷歌地图的安卓系统
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
override fun onMapReady(map: GoogleMap?) {
if(map != null) {
var holes: MutableList<MutableList<LatLng>> = mutableListOf()
//Set coordinates for future hole on map
var hole: MutableList<LatLng> = mutableListOf()
hole.add(LatLng(47.438741, 16.868739))
hole.add(LatLng(47.517742, 21.331959))
hole.add(LatLng(40.517742, 21.331959))
hole.add(LatLng(40.438741, 16.868739))
holes.add(hole)
//Adding world covering polygon
map.addPolygon(
createPolygonWithHoles(
holes,
applicationContext
)
)
}
}
/**
* Adding holes on map
*/
private fun createPolygonWithHoles(holes: List<List<LatLng>>, context: Context): PolygonOptions {
//Creating PolygonOptions of future world polygon
val polyOptions = PolygonOptions()
.addAll(createBoundsOfEntireMap())
.strokeColor(resources.getColor(android.R.color.holo_blue_bright, null))
.fillColor(resources.getColor(android.R.color.holo_red_dark, null))
.strokeWidth(15f)
//Adding holes to PolygoneOptions
holes.forEach {
polyOptions.addHole(it)
}
return polyOptions
}
/**
* Preparing and updating bounds on maps so that it looks like we have holes on it
*/
private fun createBoundsOfEntireMap(): List<LatLng> {
val delta = 0.00001f
return object : ArrayList<LatLng>() {
init {
add(LatLng((90 - delta).toDouble(), (-180 + delta).toDouble()))
add(LatLng(0.0, (-180 + delta).toDouble()))
add(LatLng((-90 + delta).toDouble(), (-180 + delta).toDouble()))
add(LatLng((-90 + delta).toDouble(), 0.0))
add(LatLng((-90 + delta).toDouble(), (180 - delta).toDouble()))
add(LatLng(0.0, (180 - delta).toDouble()))
add(LatLng((90 - delta).toDouble(), (180 - delta).toDouble()))
add(LatLng((90 - delta).toDouble(), 0.0))
add(LatLng((90 - delta).toDouble(), (-180 + delta).toDouble()))
}
}
}
之后我们就有了这个结果
当我缩放到最后 2 个缩放级别时,问题就开始了。根据地图情绪孔可以用多边形填充覆盖或多边形填充可以消失。
我尝试了不同的地图阶梯,没有地图阶梯,不同的创建世界覆盖多边形的方式......
当我创建较小的多边形时没有问题。
【问题讨论】:
标签: android google-maps zooming polygon