给定一组纬度和经度点,如何计算该集合中心点的纬度和经度(也就是将所有点的视图居中的点)?
编辑:我用过的Python解决方案:
Convert lat/lon (must be in radians) to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)
Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n
Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, …Run Code Online (Sandbox Code Playgroud) 我刚刚复制了这个问题的代码并应用了我的纬度和经度.然而,纬度和经度将是动态的,并且center地图的位置将根据位置的纬度和经度而改变.
以下是其他问题的代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Multiple Markers</title>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px;"></div>
<script type="text/javascript">
var locations = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将此http://www.movable-type.co.uk/scripts/latlong.html中提供的代码段转换为java.但是我没有得到与网站相同的结果.这是我的代码,用于找到两个点之间的中点,其中给出了它们的纬度和经度
midPoint(12.870672,77.658964,12.974831,77.60935);
public static void midPoint(double lat1,double lon1,double lat2,double lon2)
{
double dLon = Math.toRadians(lon2-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);
System.out.print(lat3 +" " + lon3 );
}
Run Code Online (Sandbox Code Playgroud)
我不确定dLon是否正确.所以请帮助我们弄明白.PSI需要找到中点的纬度和经度
我正在尝试在地图上设置用户位置,使其位于距离屏幕底部大约1/3的位置,当地图旋转时,它将围绕此点旋转.
我最接近实现这一点的setPadding()方法是使用这种方法,然而,这会导致地图在旋转时进行抖动,因为中心点会"浮动"在实际应该的位置.它看起来很难看
int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
编辑:如下图所示
我有多个点放在我的MapView上,并希望将地图置于这些点上,即不是任何特定的点,只是它们的平均中心.
我知道在Javascript G. Maps API中有一种方法.我想知道在Android中是否有一种先行方法可以做到这一点?