下午好,我正在使用该库编写本机应用程序,react-native-maps
问题是 Google 地图在 Android 上显示,而在 iPhone 上显示不正确,显示标记、位置和 Google 徽标,但地图本身没有。可能是什么问题呢?
如果您删除provider={PROVIDER_GOOGLE}
iPhone 的标准地图将显示。一切都会好起来的,但我需要一张谷歌地图。
import React, { Component } from 'react';
import { StyleSheet, View, Text, Dimensions, Platform, Image } from 'react-native';
import MapView, { PROVIDER_GOOGLE, PROVIDER_DEFAULT } from 'react-native-maps';
import { Input } from 'native-base';
const {width, height} = Dimensions.get('window');
const SCREEN_HEIGHT = height;
const SCREEN_WIDTH = width;
const ASPECT_RATION = width / height;
const LATITUDE_DELTA = 0.0922;
const LONGTITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATION;
const GOOGLE_MAPS_APIKEY = 'Тут мой ключик)';
class Map extends Component {
constructor(props) {
super(props);
this.state = {
initialPosition: {
latitude: 0,
longitude: 0,
latitudeDelta: 0,
longitudeDelta: 0,
},
markerPosition: {
latitude: 0,
longitude: 0,
},
driverPosition: {
latitude: 0,
longitude: 0,
},
destination: {
dist: false,
latitude: 0,
longitude: 0
}
}
}
componentDidMount() {
const options = {
enableHighAccuracy: true,
timeout: 10000,
maximumAge: 0
}
this.watchId = navigator.geolocation.getCurrentPosition((position) => {
let lat = parseFloat(position.coords.latitude);
let long = parseFloat(position.coords.longitude);
let initialRegion = {
latitude: lat,
longitude: long,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGTITUDE_DELTA,
}
let driversRegion = {
latitude: lat - 0.001,
longitude: long - 0.0009,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGTITUDE_DELTA,
}
this.setState({
initialPosition: initialRegion,
markerPosition: initialRegion,
driverPosition: driversRegion
})
},
(error) => alert(JSON.stringify(error)),options);
}
componentWillUnmount() {
navigator.geolocation.clearWatch(this.watchID);
}
render() {
return (
<MapView
provider={PROVIDER_GOOGLE}
style={styles.map}
initialRegion={this.state.initialPosition}
zoomEnabled={true}
pitchEnabled={true}
showsUserLocation={true}
followsUserLocation={true}
showsCompass={true}
showsIndoors={true}
showsBuildings={true}>
<MapView.Marker
coordinate={this.state.markerPosition}
>
<View style={styles.radius}>
</View>
</MapView.Marker>
{this.state.destination.dist == true ? (
<MapViewDirections
origin={this.state.markerPosition}
destination={this.state.destination}
apikey={GOOGLE_MAPS_APIKEY}
strokeWidth={3}
strokeColor='rgb(255, 0, 0)'
/>
) : []}
</MapView>
);
}
}
const styles = StyleSheet.create({
map: {
...StyleSheet.absoluteFillObject,
},
marker: {
},
radius: {
},
driver: {
},
searchText: {
textAlign: 'center'
}
});
export default Map;
经过长时间的头脑风暴,我决定更改 Google Maps 密钥,删除所有限制并将密钥注册为
Google Maps SDK for IOS
. 求助,谁会遇到这样的问题,这里是解决方案。