Я создаю веб-приложение, которое показывает местоположение, наиболее близкое к текущей позиции пользователя и выбранному маршруту.Проблема в том, что я использую простую анимацию круга для отображения местоположения пользователя на карте, и каждый раз, когда позиция пользователя изменяется, создается новый круг.
var circle;
var smallCircle;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
alert("Sorry the geolocation failed");
}
}
function showPosition(position) {
const pos =
{
lat: position.coords.latitude,
lng: position.coords.longitude
};
console.log(pos);
locationMarker(pos);
}
function locationMarker(user){
if (smallCircle != null & circle != null) {
circle.setCenter(user);
smallCircle.setCenter(user);
map.panTo(user);
} else {
smallCircle = new google.maps.Circle({
center: user,
radius: 5,
strokeColor: "#1abc9c",
strokeOpacity: 1,
strokeWeight: 1,
fillColor: "#1abc9c",
fillOpacity: 0.5
});
circle = new google.maps.Circle({
center: user,
radius: 20,
strokeColor: "#1abc9c",
strokeOpacity: 1,
strokeWeight: 1,
fillColor: "#1abc9c",
fillOpacity: 0.5
});
circle.setMap(map);
smallCircle.setMap(map);
// This is the animation
var direction = 0.8;
var rMin = 5, rMax = 20;
setInterval(function() {
var radius = circle.getRadius();
if ((radius > rMax) || (radius < rMin)) {
direction *= -1;
}
circle.setRadius(radius + direction * 0.4);
}, 50);
}
}
Я попытался использовать оператор if, чтобы объявить, что в случае, если круг уже существует, он должен изменить его центр (положение).В противном случае, он должен создать новый.
Я ожидаю создать только одну анимацию круга, и она может перецентрироваться каждый раз, когда пользователь меняет свою позицию, но сейчас он создает новый круг при изменении позиции.
* Обновить сейчас, чтоЯ удалил параметры круга из функции, с которой он работает.:)