在React Google Map中显示我当前的位置图标

时间:2019-03-19 14:09:33

标签: reactjs google-maps react-google-maps

我们是否可以通过使用React Google Maps在Google Maps中显示当前位置图标? 在文档Documtation_link中找不到用于显示当前位置图标的任何此类道具。 这是我的组件,我只需要向用户显示当前位置图标

  const googleMapCard= compose(
  withProps({
    googleMapURL:
      "https://maps.googleapis.com/maps/api/js?key=-----------,
    loadingElement: <div style={{ height: `100%` }} />,
    containerElement: <div style={{ height: `400px` }} />,
    mapElement: <div style={{ height: `100%` }} />
  }),
  lifecycle({
    componentWillMount() {
      const refs = {};

      this.setState({
        bounds: null,
        markers: [],
        onMapMounted: ref => {
          refs.map = ref;
        },
        onBoundsChanged: () => {
          this.setState({
            bounds: refs.map.getBounds(),
            center: refs.map.getCenter()
          });
        },
        onSearchBoxMounted: ref => {
          refs.searchBox = ref;
        },
        onPlacesChanged: onChange => {
          const places = refs.searchBox.getPlaces();
          const bounds = new window.google.maps.LatLngBounds();
        }
      });
    }
  }),
  withScriptjs,
  withGoogleMap
)(props => (
  <GoogleMap
    onClick={e => {
      props.onChange([e.latLng.lng(), e.latLng.lat()]);
    }}
    clickableIcons={true}
    defaultZoom={8}
    center={{ lat: props.value[1], lng: props.value[0] }}
    defaultCenter={{ lat: props.value[1], lng: props.value[0] }}
    ref={props.onMapMounted}
  >
    <SearchBox
      ref={props.onSearchBoxMounted}
      // bounds={props.bounds}
      controlPosition={window.google.maps.ControlPosition.TOP_LEFT}
      onPlacesChanged={() => {
        props.onPlacesChanged(props.onChange);
      }}
    >
      <input
        type="text"
      />
    </SearchBox>
    <Marker position={{ lat: props.value[1], lng: props.value[0] }} />
    )}
  </GoogleMap>
));

2 个答案:

答案 0 :(得分:0)

您可以使用Geolocation API。 参见:https://developers.google.com/maps/documentation/javascript/geolocation

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    var pos = {
      lat: position.coords.latitude,
      lng: position.coords.longitude
    }; 
    this.setState({ownPosition: pos})     
}

它与react-google-maps无关,它是本机浏览器api

答案 1 :(得分:0)

使用本地Geolocation Api编写导航器安全坐标访问的简单方法。

navigator?.geolocation.getCurrentPosition(({coords: {latitude: lat, longitude: lng}}) => {
    const pos = {lat, lng}
    this.setState({currentPosition: pos})  
})

这使用:

  • ?.空访问检查-Read More
  • 解构
  • 别名
  • => lambda箭头