Я использую модуль npm под названием google-map-реакции, чтобы создать собственную карту на моем веб-сайте. Этот сайт показывает, как заставить работать маркер basi c (https://levelup.gitconnected.com/reactjs-google-maps-with-custom-marker-ece0c7d184c4), и он должен выглядеть примерно так:
import React, { useState } from "react";
import GoogleMapReact from "google-map-react";
const AnyReactComponent = ({ text }: any) => <div>{text}</div>;
const SimpleMap = (props: any) => {
const [center, setCenter] = useState({ lat: 11.0168, lng: 76.9558 });
const [zoom, setZoom] = useState(11);
return (
<div style={{ height: "100vh", width: "100%" }}>
<GoogleMapReact
bootstrapURLKeys={{ key: "add your api key" }}
defaultCenter={center}
defaultZoom={zoom}
>
<AnyReactComponent lat={11.0168} lng={76.9558} text="My Marker" />
</GoogleMapReact>
</div>
);
};
export default SimpleMap;
Однако я пытаюсь указать параметры чтобы получить карту темного режима на моем веб-сайте (которая работает), но, к сожалению, сначала отображается маркер, а затем карта отображается поверх него, и маркер исчезает. Я не уверен, что правильное решение, у кого-нибудь есть идеи? Код, с которым я работаю, приведен ниже.
<div style={{ height: "50vh", width: "100%" }}>
<GoogleMapReact
bootstrapURLKeys={{ key: "SecretKey" }}
defaultCenter={this.props.center}
defaultZoom={this.props.zoom}
options={{
styles: [
{ elementType: "geometry", stylers: [{ color: "#242f3e" }] },
{ elementType: "labels.text.stroke", stylers: [{ color: "#242f3e" }] },
{ elementType: "labels.text.fill", stylers: [{ color: "#746855" }] },
{
featureType: "administrative.locality",
elementType: "labels.text.fill",
stylers: [{ color: "#d59563" }]
},
{
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{ color: "#d59563" }]
},
{
featureType: "poi.park",
elementType: "geometry",
stylers: [{ color: "#263c3f" }]
},
{
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{ color: "#6b9a76" }]
},
{
featureType: "road",
elementType: "geometry",
stylers: [{ color: "#38414e" }]
},
{
featureType: "road",
elementType: "geometry.stroke",
stylers: [{ color: "#212a37" }]
},
{
featureType: "road",
elementType: "labels.text.fill",
stylers: [{ color: "#9ca5b3" }]
},
{
featureType: "road.highway",
elementType: "geometry",
stylers: [{ color: "#746855" }]
},
{
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{ color: "#1f2835" }]
},
{
featureType: "road.highway",
elementType: "labels.text.fill",
stylers: [{ color: "#f3d19c" }]
},
{
featureType: "transit",
elementType: "geometry",
stylers: [{ color: "#2f3948" }]
},
{
featureType: "transit.station",
elementType: "labels.text.fill",
stylers: [{ color: "#d59563" }]
},
{
featureType: "water",
elementType: "geometry",
stylers: [{ color: "#17263c" }]
},
{
featureType: "water",
elementType: "labels.text.fill",
stylers: [{ color: "#515c6d" }]
},
{
featureType: "water",
elementType: "labels.text.stroke",
stylers: [{ color: "#17263c" }]
}
]
}}
>
<PlaceMarker lat={59.955413} lng={30.337844} text="My Marker" />
</GoogleMapReact>
</div>;
class PlaceMarker extends Component {
render() {
return <div style={placestyle}>{this.props.text}</div>;
}
}
const K_WIDTH = 40;
const K_HEIGHT = 40;
const placestyle = {
// initially any map object has left top corner at lat lng coordinates
// it's on you to set object origin to 0,0 coordinates
position: "absolute",
width: K_WIDTH,
height: K_HEIGHT,
left: -K_WIDTH / 2,
top: -K_HEIGHT / 2,
border: "5px solid #f44336",
borderRadius: K_HEIGHT,
backgroundColor: "white",
textAlign: "center",
color: "#3f51b5",
fontSize: 16,
fontWeight: "bold",
padding: 4
};
export default placestyle;