地图上的计算中点与测地折线不重叠

时间:2019-08-27 13:37:38

标签: android google-maps kotlin google-maps-markers

我在地图上连接了两个点的测地线。我还想将标记放在这些点之间的中点上,以便将其显示在折线上。 为了计算中点,我正在使用script from this link,并且缩小地图时看起来不错,在该行上方显示了添加的标记。但是,当我放大它时,您会看到标记稍微偏向侧面。这是屏幕截图:

enter image description here

我如何计算中点:

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的计算不准确所致。如何确定计算出的中点与折线重叠?

编辑:我知道注意到问题发生在点之间的较短距离上。例如,当一个点在欧洲,第二个在美国时,它可以正常工作,并且我的标记与折线重叠

0 个答案:

没有答案