Tôi đang sử dụng airbnb's map để phản ứng gốc trên ứng dụng của tôi. Câu hỏi này dành cho ứng dụng android vì tôi chưa nhận được ứng dụng iOS.Theo dõi vị trí của người dùng trên MapView của React Native AirBnb [Android]
Vấn đề của tôi:
navigator.geolocation hoạt động tốt trên giả lập, nhưng phải mất quá nhiều thời gian trên các thiết bị thực tế, đến mức đôi khi nó lần ra trên các thiết bị cũ.
Những gì tôi đã nhận thấy:
nếu showsUserLocation
prop được thiết lập là true, tôi có thể thấy nguồn gốc "vị trí hiện tại" điểm đánh dấu trên con đường bản đồ trước khi getCurrentPosition giải quyết.
Những gì tôi muốn:
- Tôi muốn khu vực của tôi luôn được tập trung vào vị trí của người dùng.
- Tôi muốn một cách để truy cập api vị trí địa lý gốc (phải là nhanh hơn?) Hoặc có thể ai đó nói cho tôi biết tôi đang làm gì sai. Dưới đây là mẫu mã.
- Tôi muốn vẫn có thể phát hiện vị trí của người dùng ngay cả sau khi dịch vụ vị trí đã được bật/tắt. Đây là hành vi của
showsUserLocation
chống đỡ, nhưng có vẻ như một khi lỗi watchPostion, nó dừng hoàn toàn.
Dưới đây là những gì tôi có cho đến nay, nó rất đơn giản vì nó là:
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
console.log("getCurrentPosition Success");
this.setState({
region: {
...this.state.region,
latitude: position.coords.latitude,
longitude: position.coords.longitude,
}
});
this.props.resetNotifications();
this.watchPosition();
},
(error) => {
this.props.displayError("Error dectecting your location");
alert(JSON.stringify(error))
},
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}
watchPosition() {
this.watchID = navigator.geolocation.watchPosition(
(position) => {
console.log("watchPosition Success");
if(this.props.followUser){
this.map.animateToRegion(this.newRegion(position.coords.latitude, position.coords.longitude));
}
},
(error) => {
this.props.displayError("Error dectecting your location");
},
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}
Bạn nên ra khỏi văn phòng hoặc nhà riêng với thiết bị để kiểm tra vị trí của bạn. Phải là 'enableHighAccuracy: true' trong các thiết bị thực. Nó làm việc cho tôi hoàn hảo. –
kiểm tra câu hỏi này http://stackoverflow.com/a/38125402/2955679 –
@pedropeixoto Tôi đã làm chính xác tất cả những gì đã hỏi trong hướng dẫn cài đặt nhưng showsUserLocation không hoạt động đối với tôi. Bạn có thể giúp tôi không.? – HelpingHand