我在地图上连接了两个点的测地线。我还想将标记放在这些点之间的中点上,以便将其显示在折线上。 为了计算中点,我正在使用script from this link,并且缩小地图时看起来不错,在该行上方显示了添加的标记。但是,当我放大它时,您会看到标记稍微偏向侧面。这是屏幕截图:
我如何计算中点:
fun midpoint(point1: LatLng, point2: LatLng): LatLng {
val deltaLongitude = Math.toRadians(point2.longitude - point1.longitude)
val latitude1 = Math.toRadians(point1.latitude)
val latitude2 = Math.toRadians(point2.latitude)
val longitude1 = Math.toRadians(point1.longitude)
val Bx = Math.cos(latitude2) * Math.cos(deltaLongitude)
val By = Math.cos(latitude2) * Math.sin(deltaLongitude)
val latitude = Math.atan2(Math.sin(latitude1) + Math.sin(latitude2),
Math.sqrt((Math.cos(latitude1) + Bx) * (Math.cos(latitude1) + Bx) + By * By))
val longitude = longitude1 + Math.atan2(By, Math.cos(latitude1) + Bx)
return LatLng(Math.toDegrees(latitude), Math.toDegrees(longitude))
}
以及我如何添加测地线:
val polylineOptions = PolylineOptions()
.add(departurePosition, destinationPosition)
.width(10)
.color(ContextCompat.getColor(context, R.color.e_light_blue_70))
.geodesic(true)
googleMap.addPolyline(polylineOptions)
我想这是我或Google Maps API的计算不准确所致。如何确定计算出的中点与折线重叠?
编辑:我知道注意到问题发生在点之间的较短距离上。例如,当一个点在欧洲,第二个在美国时,它可以正常工作,并且我的标记与折线重叠