从React Native的视口中获取latitudeDelta和longitudeDelta

时间:2018-06-30 15:47:14

标签: react-native

我有此数据,我也想获得latitudeDelta/longitudeDelta

geometry:{
    location:{
        lat:35.7212504,
        lng:51.36276979999999
    },
    viewport:{
        northeast:{lat: 35.7290254, lng: 51.380868},
        southwest:{lat: 35.7004529, lng: 51.3492823},
    }
}

我将获得latitudeDelta/longitudeDelta的数据 当然,我会说我使用react-native-google-places-autocomplete并输出此数据

2 个答案:

答案 0 :(得分:1)

const { width, height } = Dimensions.get('window');

const ASPECT_RATIO = width / height;
const LATITUDE_DELTA = 0.0922;

const lat = details.geometry.location.lat;
const lng = details.geometry.location.lng;
const latDelta = details.geometry.viewport.northeast.lat - details.geometry.viewport.southwest.lat;
const lngDelta = latDelta * ASPECT_RATIO;

let coordinate = {
    latitude: lat,
    longitude: lng,
    latitudeDelta: latDelta,
    longitudeDelta: lngDelta
};

答案 1 :(得分:1)

如果“从视口中的 ”表示“ 地图当前在其纬度-经度位置和当前缩放级别(纬度和经度增量)上显示的”,您可以:

如Exilz在his comment on a github issue中所说

...可以通过事件onRegionChangeComplete获取区域值。

如果要以编程方式放大任何内容,可以使用方法animateToRegion并传递坐标和从onRegionChangeComplete获得的增量。您只需捏住地图即可找到所需的“缩放”,并记下这些值。

这是他的代码示例,可在其中一个标记上居中/缩放地图:

onPressMarker (markerData) {
    this.setState({ openedMarker: markerData });
    this.refs.map.animateToRegion({
        latitude: parseFloat(markerData.latitude),
        longitude: parseFloat(markerData.longitude),
        latitudeDelta: 0.0043,
        longitudeDelta: 0.0034
    });
}

我主要复制了他的内容,因此我敦促您浏览github问题并喜欢他的评论。