У меня есть этот объект для значка маркера в React:
const icon = {
path: "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-
1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z",
fillColor: "red",
fillOpacity: 1,
scale: 2,
strokeColor: "red",
strokeWeight: 1,
};
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь
Маркеры не указывают на точное местоположение только при увеличении масштаба. Я попытался добавить это в объект значка: anchor: new google.maps.Point(15, 42),
, но при обновлении страницы он возвращает ошибку: Uncaught ReferenceError: google не определен. Фактическое местоположение находится справа от Варзеи (см. рисунок №3).
Я использую import {GoogleMap, useLoadScript, Marker} из "@react-google-maps/api";
Сообщение об ошибке, вероятно, не имеет никакого отношения к тому факту, что значок маркера указывает не туда, куда вы ожидаете. Как вы пришли к (15, 42)
?
Ну, значок отображается как изображение размером 30 x 42 пикселей, и я попытался скопировать это решение: Developers.google.com/maps/documentation/javascript/examples/…. Больше ничего не нашел...
Вы правы, вам нужно определить свойство anchor
. Самый простой способ — разместить маркер SVG вместе с маркером стандартный в том же месте и соответствующим образом настроить. 15, 42
явно неверно. Не забывайте, что вы также используете scale: 2
на значке.
Я получаю наилучшие результаты, используя new google.maps.Point(12.25,21.5)
function initialize() {
const myLatLng = new google.maps.LatLng(0,0);
const mapOptions = {
zoom: 4,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
const map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
const icon = {
path: "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z",
fillColor: "red",
fillOpacity: 1,
scale: 2,
strokeColor: "red",
strokeWeight: 1,
anchor: new google.maps.Point(12.25,21.5)
};
const marker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: icon
});
const marker2 = new google.maps.Marker({
position: myLatLng,
map: map
});
}
initialize();
#map-canvas {
height: 150px;
}
<div id="map-canvas"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
Что касается ReferenceError: google is not defined
, вам нужно будет открыть еще один вопрос и предоставить Минимальный воспроизводимый пример, который позволит воспроизвести проблему.
Привет. Я использую React и не знаю, как определить привязку в React. Должен ли я сделать новый компонент под названием «Маркер»?
А как насчет этот ответ?
Ваши ответы мне очень помогли. Благодарю вас!
вам нужно убедиться, что библиотека Google загружена, прежде чем вы попытаетесь добавить маркеры - поэтому у вас будет `Uncaught ReferenceError: google не определен`. Как вы загружаете SDK карт Google?