我正在尝试从 turf.js 计算 bbox,就像在下面的链接中给出的那样
这是我的代码以及我如何尝试从 turf.js 实现 bbox 但它导致错误。
import React, { Component } from 'react';
import { View, Text,StyleSheet } from 'react-native';
import {Spinner} from 'native-base';
import Mapbox from '@mapbox/react-native-mapbox-gl';
import MapboxGL from '@mapbox/react-native-mapbox-gl';
import MapboxClient from '@mapbox/react-native-mapbox-gl';
import { lineString as makeLineString} from '@turf/helpers';
import turf from '@turf/bbox'
Mapbox.setAccessToken('pk.eyJ1IjoiYW1hbHAiLCJhIjoiY2pkdTZ0M3ZpMnFsYzJ2amc0ZnRjZXRhMCJ9.8PFRuAdcjb7OMHAQHiW5fA');
const myCoords = [
[43.75, -16.875],
[33.75, -16.875],
[22.5, -22.5],
]
const line = makeLineString(myCoords)
var bounds = turf.bbox(myCoords);
//var bounds = require('bound-points')(myCoords)
const layerStyles = MapboxGL.StyleSheet.create({
origin: {
circleRadius: 5,
circleColor: 'white',
},
destination: {
circleRadius: 5,
circleColor: 'white',
},
route: {
lineColor: 'red',
lineWidth: 10,
lineOpacity: 0.84,
},
progress: {
lineColor: '#314ccd',
lineWidth: 3,
},
});
export default class App extends Component {
componentDidMount() {
}
constructor(props) {
super(props);
this.state = {
latitude: 41.596,
longitude: 1.542,
error: null,
isMapLoaded: true,
isLoaded: true,
isTimeout: false,
route: null,
currentPoint: null,
routeSimulator: null,
visibleBounds: undefined
};
}
getVisibleBounds = async () => {
const visibleBounds = await this.map.getVisibleBounds();
this.setState({ visibleBounds });
console.log(visibleBounds + "amal")
console.log(visibleBounds[0] + "amal")
console.log(visibleBounds[1] + "amal")
if(visibleBounds != null)
{
this.onFitBounds(visibleBounds);
}
};
onFitBounds (visibleBounds) {
this.map.fitBounds( bounds[0],bounds[1], 20); // ne sw
}
render() {
return (
<View style={styles.container}>
{
this.state.isMapLoaded?this.mapView():null
}
</View>
);
}
mapView(){
return(
<Mapbox.MapView
ref={(ref) => this.map = ref}
styleURL={Mapbox.StyleURL.Street}
zoomLevel={8}
centerCoordinate={[47.809532,13.055054]}
onDidFinishRenderingMapFully={this.getVisibleBounds}
style={styles.container}
>
<MapboxGL.ShapeSource id='line1' shape={line}>
<MapboxGL.LineLayer style={layerStyles.route} id='linelayer1' />
</MapboxGL.ShapeSource>
</Mapbox.MapView>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
这是我得到的(错误屏幕),可能是什么问题,我无法从中获取 bbox 功能'@turf/bbox'
。我正在提供一定数量的坐标
turf.bbox(myCoords)
并将其设置为 mapbox 中的 fitBounds。