Определить, находится ли маркер внутри круга в Google Maps (Javascript API V3) - PullRequest
16 голосов
/ 07 января 2012

У меня есть маркеры, усеянные вокруг карты, и радиус (наложение круга) на маркере, обозначающем ваше местоположение (который меняется при каждом перемещении). Могу ли я проверить, нет ли других маркеров внутри круга?

UPDATE

Я справился с этим, обойдя каждый маркер и используя библиотеку геометрии, вычисляя расстояние между вашим маркером и другим маркером, а затем простой оператор if, чтобы увидеть, меньше ли он 100 метров.

function checkAllChests() {
    var Current = 0;
    $.each(treasureArray, function() {
        //var thisLocation = treasureArray[Current].getPosition();

        var distanceBetween = Math.ceil(google.maps.geometry.spherical.computeDistanceBetween(treasureArray[Current].getPosition(), marker_me.getPosition()));
        if(distanceBetween < 100) {
            alert('CAN OPEN THIS CHEST');
        }
        Current++;
    });
}

Хочу отметить, что в приведенном выше коде используется jQuery, поэтому, если вы не используете jQuery, он не будет работать.

Ответы [ 2 ]

45 голосов
/ 08 января 2012

Вот способ добавить метод contains в класс google.maps.Circle. Сначала он использует ограничивающую рамку, чтобы исключить точку, если она даже не находится в ограничительной рамке. Если он находится в ограничительной рамке, он сравнивает расстояние от точки до центра с радиусом и возвращает истину, только если расстояние меньше радиуса.

Как только вы добавите нижеприведенный javascript, вы можете вызвать метод contains () вашего объекта круга.

google.maps.Circle.prototype.contains = function(latLng) {
  return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}
0 голосов
/ 02 апреля 2015
google.maps.Circle.prototype.contains = function(latLng) {
  return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...