- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 Android MapBox SDK 5.1.0-SNAPSHOT。如何用坐标和以米为单位的半径绘制圆?
有绘制多边形的想法。但这是非常有问题的。
最佳答案
正如 Zugaldia 所回答的那样,绘制圆形图层是最简单的方法。但前提是你想画一个圆,忽略尺寸精度。
另一种选择是围绕您的点绘制一个圆周,以获得正确的距离和可视化效果(如果倾斜),稍后我会解释。
在Kotlin ,对不起,对不起。
mapView.getMapAsync {
map = it
// Add the source (at start, an 'empty' GeoJsonSource)
map?.addSource(GeoJsonSource(SOURCE_ID))
// Create a circle layer from previously defined source
// don't forget source identifier
val layer = CircleLayer(CIRCLE_LAYER_ID, SOURCE_ID)
layer.withProperties(
circleRadius(50f),
circleOpacity(.4f),
circleColor(Color.WHITE)
)
map?.addLayer(layer)
}
当你拥有你想要绘制的位置时:
private fun updateCircleLayer() {
// Update the GeoJsonSource
// !!! Beware, (longitude, latitude), not the other way around !!!
val center = Point.fromCoordinates(doubleArrayOf(longitude, latitude))
map?.getSourceAs<GeoJsonSource>(SOURCE_ID)?.setGeoJson(center)
}
我调整了这个算法以适应语言和需求:https://stackoverflow.com/a/39006388/4258214
private fun getPerimeterFeature(radiusInKilometers: Double = .05, sides: Int = 64): Feature {
// here, currentPosition is a class property, get your lat & long as you'd like
val latitude = currentPosition.latitude
val longitude = currentPosition.longitude
val positions = mutableListOf<Position>()
// these are conversion constants
val distanceX: Double = radiusInKilometers / (111.319 * Math.cos(latitude * Math.PI / 180))
val distanceY: Double = radiusInKilometers / 110.574
val slice = (2 * Math.PI) / sides
var theta: Double
var x: Double
var y: Double
var position: Position
for (i in 0..sides) {
theta = i * slice
x = distanceX * Math.cos(theta)
y = distanceY * Math.sin(theta)
position = Position.fromCoordinates(longitude + x, latitude + y)
positions.add(position)
}
return Feature.fromGeometry(Polygon.fromCoordinates(listOf(positions)))
}
请参阅第一部分中的 updateCircleLayer()
以将返回的 Feature
提供给 GeoJSonSource
,仅此而已。
希望这会有所帮助。玩得开心!
关于android - 画圈 Android MapBox SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283076/
我正在尝试在我的 iOS 应用程序中创建下面的圆圈。我知道如何制作圆圈,但不完全确定如何沿着弧线获得点。它必须是代码而不是图像。下面也是我目前拥有的代码。 - (void)drawRect:(CGR
HTML: 06 december 2013 item2 item3 item4
我正在尝试在 mousePressed 事件上绘制具有随机颜色和随机直径的圆圈,但是当我尝试稍微组织我的代码时遇到了一些问题“将我的代码分成类” . Controller 类 public class
我使用 Android MapBox SDK 5.1.0-SNAPSHOT。如何用坐标和以米为单位的半径绘制圆? 有绘制多边形的想法。但这是非常有问题的。 最佳答案 正如 Zugaldia 所回答的那
使用以下代码绘制圆圈(取自 Google Play 服务“ map ”示例): PolylineOptions options = new PolylineOptions(); int
我是一名优秀的程序员,十分优秀!