我已经开始纬度,经度和结束纬度,经度.
我使用纬度和经度找到Geo Point.
之后我在两个Geo点之间画线.
我的问题是如何找到Geopoint的中心?
我在开始和结束位置显示"OverlayItem".但无法找到Geopoint的中心.
如何找到中心点?
我使用下面的代码在开始和结束位置显示overlayItem.
drawable = getResources().getDrawable(R.drawable.annot_start);
point = new GeoPoint((int)(startLatitude*1E6), (int)(startLongitude*1E6));
overlayItem = new OverlayItem(point, startAddress, "Welcome");
itemizedOverlay[n]= new MyItemizedOverlay(drawable, mapView);
itemizedOverlay[n].addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay[n]);
drawable = getResources().getDrawable(R.drawable.annot_end);
point = new GeoPoint((int)(endLatitude*1E6), (int)(endLongitude*1E6));
overlayItem = new OverlayItem(point, endAddress, "Welcome");
itemizedOverlay[n+1]= new MyItemizedOverlay(drawable, mapView);
itemizedOverlay[n+1].addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay[n+1]);
Run Code Online (Sandbox Code Playgroud)
您可以使用Haversine formula代码段并使用此页面进行检查
public static void midPoint(double lat1,double lon1,double lat2,double lon2){
double dLon = Math.toRadians(lon2 - lon1);
//convert to radians
lat1 = Math.toRadians(lat1);
lat2 = Math.toRadians(lat2);
lon1 = Math.toRadians(lon1);
double Bx = Math.cos(lat2) * Math.cos(dLon);
double By = Math.cos(lat2) * Math.sin(dLon);
double lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + Bx) * (Math.cos(lat1) + Bx) + By * By));
double lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);
//print out in degrees
System.out.println(Math.toDegrees(lat3) + " " + Math.toDegrees(lon3));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |