with react google address javascript google-maps reactjs meteor google-maps-api-3

javascript - address - Adición de marcador a Google Maps en google-map-react



react google-< maps (2)

Agregar un marcador en tu mapa no es tan fácil como nos gustaría, principalmente porque los documentos confusos, pero aquí tienes un ejemplo súper fácil:

const Map = props => { return ( <GoogleMapReact bootstrapURLKeys={{ props.key }} defaultCenter={{lat: props.lat, lng: props.lng}} defaultZoom={props.zoom}> {/* This is the missing part in docs: * * Basically, you only need to add a Child Component that * takes ''lat'' and ''lng'' Props. And that Component should * returns a text, image, super-awesome-pin (aka, your marker). * */} <Marker lat={props.lat} lng={props.lng}} /> </GoogleMapReact> ) } const Marker = props => { return <div className="SuperAwesomePin"></div> }

Estoy utilizando el paquete NPM de google-map-react para crear un mapa de Google y varios marcadores.

Pregunta: ¿Cómo podemos agregar los marcadores predeterminados de Google Maps al mapa?

A partir de este problema de Github , parece que necesitamos acceder a la API interna de Google Maps mediante la función onGoogleApiLoaded .

Refiriéndonos a un ejemplo de los documentos de la API JS de Google Maps , podemos usar el siguiente código para representar el marcador, pero ¿cómo definimos las referencias para map ?

var marker = new google.maps.Marker({ position: myLatLng, map: map, title: ''Hello World!'' });

Código actual:

renderMarkers() { ... } render() { return ( <div style={{''width'':800,''height'':800}}> <GoogleMap bootstrapURLKeys={{key: settings.googleMapApiKey}} defaultZoom={13} defaultCenter={{ lat: this.props.user.profile.location.coordinates[1], lng: this.props.user.profile.location.coordinates[0] }} onGoogleApiLoaded={({map, maps}) => this.renderMarkers()} yesIWantToUseGoogleMapApiInternals > </GoogleMap> </div> ); }


Es posible que esto no quede del todo claro en la descripción del archivo Léame, pero el argumento de los maps es, de hecho, el objeto API de los mapas (y, por supuesto, el mapa es la instancia actual de Google Map). Por lo tanto, debes pasar ambos a tu método:

onGoogleApiLoaded={({map, maps}) => this.renderMarkers(map, maps)}

y úsalos:

renderMarkers(map, maps) { let marker = new maps.Marker({ position: myLatLng, map, title: ''Hello World!'' }); }