在react原生mapview的例子中,他们有latitudeDelta和longitudeDelta。它等于高度和宽度吗?用什么单位?根据他们的github评论,它说要显示的最小和最大纬度/经度之间的距离。但这对我没有帮助,我想知道用户在Map上看到了什么。
nkoocmlb1#
我来这里也是因为我找不到任何好的文档,谷歌也没有帮助。以下是我自己的研究:latitudeDelta或longitudeDelta中只有一个用于计算贴图的大小。它根据以下公式取两者中较大的一个,忽略另一个。这样做是为了避免拉伸贴图。1.贴图的大小将根据样式中指定的宽度和高度和/或react-native计算的宽度和高度进行调整。1.该Map计算两个值longitudeDelta/width和latitudeDelta/height,比较这两个计算值,并取两者中较大的值。
latitudeDelta
longitudeDelta
longitudeDelta/width
latitudeDelta/height
longitude - longitudeDelta
longitude + longitudeDelta
latitude - latitudeDelta
latitude + latitudeDelta
以下是一些例子:
// this uses latitudeDelta because 0.04/300 > 0.05/600 <MapView style={{width: 600, height: 300}} region={{ latitude: 31.776685, longitude: 35.234491, latitudeDelta: 0.04, longitudeDelta: 0.05, }} /> // this uses longitudeDelta because 0.05/600 > 0/myVar when myVar > 0 <MapView style={{width: 600, height: myVar}} region={{ latitude: 40.689220, longitude: -74.044502, latitudeDelta: 0, longitudeDelta: 0.05, }} />
xhv8bpkk2#
你需要
"centroid": { "latitude": "24.2472", "longitude": "89.920914" }, "boundingBox": { "southWest": { "latitude": "24.234631", "longitude": "89.907127" }, "northEast": { "latitude": "24.259769", "longitude": "89.934692" } }
或类似的数据来适当地计算纬度Δ和经度Δ。下面是react/react-native的演示代码。
componentDidMount() { const { width, height } = Dimensions.get('window'); const ASPECT_RATIO = width / height; const lat = parseFloat(centroid.latitude); const lng = parseFloat(centroid.longitude); const northeastLat = parseFloat(boundingBox.northEast.latitude); const southwestLat = parseFloat(boundingBox.southWest.latitude); const latDelta = northeastLat - southwestLat; const lngDelta = latDelta * ASPECT_RATIO; this.setState({ region: { latitude: lat, longitude: lng, latitudeDelta: latDelta, longitudeDelta: lngDelta } }) }
zpjtge223#
我发现这在苹果开发者指南要为Map区域显示的东西距离量(以度为单位)。经度范围跨越的公里数因当前纬度而异。例如,在赤道,1度经度跨越的距离约为111公里(69英里),但在两极则缩小为0公里。😀 该库在GitHub中也有一个问题,该问题已解决https://github.com/react-community/react-native-maps/issues/637此直观说明也有助于stackoverflow.com在这篇维基百科文章中,它展示了如何计算精确值https://en.wikipedia.org/wiki/Latitude#Length_of_a_degree_of_latitude
58wvjzkj4#
如果你和我一样,想打开宽度固定为x公里的谷歌Map,那么尼玛的评论非常有用:)1公里的纬度增量在地球上的任何地方都是一致的(1度纬度约为110.574公里)但是1 km需要不同的经度增量,这取决于你离赤道的距离。基本上,1度经度在赤道上覆盖了大约111 km,但在北极并不是很远,如下图所示:
因此,我从其他StackOverflow帖子中吸取了教训,并希望分享我对公里<-->纬度和公里<-->经度的简单转换,这些转换尽可能准确,而不必进入时髦的地球物理学,因为地球不是一个精确的球体。以下内容应足以满足大多数人的需求!
function radiansToDegrees(angle) { return angle * (180 / Math.PI); } function degreesToRadians(angle) { return angle * (Math.PI / 180); } function latitudesToKM(latitudes) { return latitudes * 110.574; } function kMToLatitudes(km) { return km / 110.574; } function longitudesToKM(longitudes, atLatitude) { return longitudes * 111.32 * Math.cos(degreesToRadians(atLatitude)); } function kMToLongitudes(km, atLatitude) { return km * 0.0089831 / Math.cos(degreesToRadians(atLatitude)); }
因此,要在点[-0.056809,51.588491]处打开宽度为1 km的react-native-maps视图,您只需执行以下操作:
<MapView region={{ latitude: 51.588491, latitudeDelta: 0.00001, //any number significantly smaller than longitudeDelta longitude: -0.056809, longitudeDelta: kMToLongitudes(1.0, 51.588491), }} ...
所有这些信息都已经在其他StackOverflow的帖子中了,但是我想在一个地方分享这一切,以防它节省一些人的时间!
4条答案
按热度按时间nkoocmlb1#
我来这里也是因为我找不到任何好的文档,谷歌也没有帮助。以下是我自己的研究:
latitudeDelta
或longitudeDelta
中只有一个用于计算贴图的大小。它根据以下公式取两者中较大的一个,忽略另一个。这样做是为了避免拉伸贴图。1.贴图的大小将根据样式中指定的宽度和高度和/或react-native计算的宽度和高度进行调整。
1.该Map计算两个值
longitudeDelta/width
和latitudeDelta/height
,比较这两个计算值,并取两者中较大的值。longitudeDelta
,则左边缘为longitude - longitudeDelta
,右边缘为longitude + longitudeDelta
。顶部和底部是填充高度所需的任何值,而不会拉伸贴图。latitudeDelta
,则底边是latitude - latitudeDelta
,顶边是latitude + latitudeDelta
。左和右是填充宽度所需的值,而不拉伸贴图。以下是一些例子:
xhv8bpkk2#
你需要
或类似的数据来适当地计算纬度Δ和经度Δ。
下面是react/react-native的演示代码。
zpjtge223#
我发现这在苹果开发者指南
要为Map区域显示的东西距离量(以度为单位)。经度范围跨越的公里数因当前纬度而异。例如,在赤道,1度经度跨越的距离约为111公里(69英里),但在两极则缩小为0公里。
😀 该库在GitHub中也有一个问题,该问题已解决
https://github.com/react-community/react-native-maps/issues/637
此直观说明也有助于stackoverflow.com
在这篇维基百科文章中,它展示了如何计算精确值
https://en.wikipedia.org/wiki/Latitude#Length_of_a_degree_of_latitude
58wvjzkj4#
如果你和我一样,想打开宽度固定为x公里的谷歌Map,那么尼玛的评论非常有用:)
1公里的纬度增量在地球上的任何地方都是一致的(1度纬度约为110.574公里)
但是1 km需要不同的经度增量,这取决于你离赤道的距离。基本上,1度经度在赤道上覆盖了大约111 km,但在北极并不是很远,如下图所示:
因此,我从其他StackOverflow帖子中吸取了教训,并希望分享我对公里<-->纬度和公里<-->经度的简单转换,这些转换尽可能准确,而不必进入时髦的地球物理学,因为地球不是一个精确的球体。
以下内容应足以满足大多数人的需求!
因此,要在点[-0.056809,51.588491]处打开宽度为1 km的react-native-maps视图,您只需执行以下操作:
所有这些信息都已经在其他StackOverflow的帖子中了,但是我想在一个地方分享这一切,以防它节省一些人的时间!