Случайный маркер на картах Google Jquery

0

Я пытаюсь создать карту, где я могу перебирать массив из разных мест. Затем я хочу указать положение случайной координаты. Поэтому я хочу, чтобы одна координата помещала маркер для меня случайным образом каждый раз, когда я перезагружаю страницу!

    function initialize() {
    //here is the starting for the map, where it will begin to show
    var latlng = new google.maps.LatLng(59.2982762, 17.9970823);

    var myOptions = {
      zoom: 13,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
      //below are the markers coordinates, change it to your coordinates
        var map = new google.maps.Map(document.getElementById('map-canvas'),  myOptions);

        var i = 0;
        function randAreas() {
        var flagAreas = (Math.round(Math.random())-0.5);
    }

      var flagAreas = [

      [59.2967322, 18.0009393],
      [59.2980245, 17.9971503],
      [59.2981078, 17.9980875],
      [59.2982762, 17.9970823],
      [59.2987638, 17.9917639],
      [59.2987649, 17.9917824],
      [59.2987847, 17.9917731],
      [59.2988498, 17.991684],
      [59.2988503, 17.9981593],
      [59.3008233, 18.0041763],
      [59.3014033, 18.0068793],
      [59.3016619, 18.0137766]
      ];

    return flagAreas;

    flagAreas.sort(randAreas);

      //script counts the array of coordinates
      //for (var i = 0; i < flagAreas.length; i++) {
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng(flagAreas[i], flagAreas[i]),
          map: map,
        });
      }

 window.onload = initialize;

</script>
  • 0
    есть ошибка с для цикла
  • 0
    Цикл for не запускается, он закомментирован.
Показать ещё 2 комментария
Теги:
google-maps

2 ответа

0
Лучший ответ

Во-первых, переместите переменную вашей карты за пределы инициализации, если вам нужно использовать ее в другом месте вашего кода.

var map;

function initialize() {

  var latlng = new google.maps.LatLng(59.2982762, 17.9970823);
  var myOptions = {
    zoom: 13,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById('map-canvas'),  myOptions);

  var flagAreas = [
    [59.2967322, 18.0009393], [59.2980245, 17.9971503],
    [59.2981078, 17.9980875], [59.2982762, 17.9970823],
    [59.2987638, 17.9917639], [59.2987649, 17.9917824],
    [59.2987847, 17.9917731], [59.2988498, 17.991684],
    [59.2988503, 17.9981593], [59.3008233, 18.0041763],
    [59.3014033, 18.0068793], [59.3016619, 18.0137766]
  ];

Перемешайте флагAreas и захватите первый массив.

  var random = flagAreas.sort(function () { return Math.random() - 0.5 } )[0];

Добавьте маркер.

  var marker = new google.maps.Marker({
    position: new google.maps.LatLng(random[0], random[1]),
    map: map,
  });

}

window.onload = initialize;

скрипка

  • 0
    Я получаю неожиданный идентификатор в этой строке var random = flagAreas.sort (function () Math.random () - 0.5) [0];
  • 0
    Это может быть из-за отсутствия фигурных скобок. Я обновил ответ. В противном случае это должно работать нормально - проверьте скрипку.
Показать ещё 6 комментариев
0

В вашем коде есть 3 проблемы.

1) Неожиданное завершение initialize без выполнения цикла for.

 return flagAreas;  //Remove this code

2)

flagAreas[i] //An array returns both lat and lng

position: new google.maps.LatLng(flagAreas[i], flagAreas[i]) //Wrong

Заменить как

position: new google.maps.LatLng(flagAreas[i][0], flagAreas[i][1]) //Correct

3) Удалите , когда вы достигнете последней опции.

 map: map

Наконец, проверьте это в JSFiddle

  • 0
    Спасибо. Проблема не в цикле for, потому что я его не использую. Я хочу, чтобы MathRandom выбрал для меня координату случайным образом, а затем поместил маркер на карту при загрузке страницы.
  • 0
    Извините, моя ошибка не видела фигурные скобки. Но он не рандомизируется, он просто берет первую координату в массиве. ссылка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню