我有一个使用react原生地图的react原生应用程序,其中有一个功能可以根据用户选择的半径在用户附近显示,使用地理编码可以很好地工作。但我面临着根据用户半径设置地图缩放级别的问题?如果用户选择了最大半径米,那么地图应该显示整个世界吗?我怎样才能做到这一点?根据用户选择的半径动态设置缩放级别?
要设置使用反作用原生滑块的半径,如何在滑块的滑块上设置缩放级别?
import { Dimensions} from 'react-native';
let {width, height} = Dimensions.get('window');
const ASPECT_RATIO = width / height;
const LATITUDE_DELTA = 1; //Increase or decrease the zoom level dynamically
const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO;
<MapView
region={{
latitude: currentLocation.latitude,
longitude: currentLocation.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA,
}}>
initialRegion:{
latitude: parseFloat(28.999),
longitude: parseFloat(28.999),
latitudeDelta: 0.3822,
longitudeDelta: Dimensions.get('window').width / Dimensions.get('window').height,
}
我搜索了很多,并确定了这个函数,它似乎运行得很好,如果你知道你想搜索的中心点的radius
,它应该会生成一个初始边界框:
export const radiusToDelta = (radius: number, lat: number) => {
// as described here: https://github.com/react-native-maps/react-native-maps/issues/505#issuecomment-354029449
const oneDegreeOfLatitudeInMeters = 111.32 * 1000;
const diameter = radius * 2;
const delta =
(diameter * 1609.34) /
(oneDegreeOfLatitudeInMeters * Math.cos(lat * (Math.PI / 180)));
return {
latitudeDelta: delta,
longitudeDelta: delta,
};
};