首页 文章

反应原生MapView:什么是latitudeDelta longitudeDelta

提问于
浏览
6

react native mapview的例子中,他们有latitudeDelta和longitudeDelta . 它是否等于高度和宽度?在什么单位?据说,这是他们的github comment

要显示的最小纬度/经度之间的距离 .

但这并没有帮助我 . 我想知道用户在 Map 上看到了什么 .

3 回答

  • 0

    我也来到这里是因为我找不到任何好文件,谷歌搜索没有帮助 . 以下是我自己的研究:

    只有 latitudeDeltalongitudeDelta 中的一个用于计算 Map 的大小 . 根据以下公式,它取两个中较大的一个而忽略另一个 . 这样做是为了避免拉伸 Map .

    • Map 的大小根据样式中指定的宽度和高度和/或由react-native计算 .

    • Map 计算两个值 longitudeDelta/widthlatitudeDelta/height ,比较这两个计算值,并取两者中较大的一个 .

    • 根据在步骤2中选择的值缩放 Map ,忽略另一个值 .

    • 如果所选值为 longitudeDelta ,则左边为 longitude - longitudeDelta ,右边为 longitude + longitudeDelta . 顶部和底部是填充高度所需的任何值,而不会拉伸 Map .

    • 如果所选值为 latitudeDelta ,则下边缘为 latitude - latitudeDelta ,上边缘为 latitude + latitudeDelta . 左侧和右侧是填充宽度所需的任何值,而不拉伸 Map .

    这里有些例子:

    // 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,
      }}
    />
    
  • 4

    尝试谷歌搜索我在一分钟内找到答案

    为 Map 区域显示的东西距离(以度为单位)的数量 . 经度范围跨越的公里数根据当前纬度而变化 . 例如,一个经度在赤道处跨越大约111公里(69英里)的距离,但在极点处缩小到0公里 .

    GitHub也有问题https://github.com/react-community/react-native-maps/issues/637

    我发现这个东西也是https://en.wikipedia.org/wiki/Latitude#Length_of_a_degree_of_latitude

  • 9

    你需要

    "centroid": {
        "latitude": "24.2472",
        "longitude": "89.920914"
    },
    "boundingBox": {
        "southWest": {
            "latitude": "24.234631",
            "longitude": "89.907127"
        },
        "northEast": {
            "latitude": "24.259769",
            "longitude": "89.934692"
        }
    }
    

    或者类似的数据来正确计算latitudeDelta和longitudeDelta .

    下面是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
          }
        })     
    }
    

相关问题