Геолокация гугл карты jquery

0

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

    var map;
    var pos;

    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
    };
        var map = new google.maps.Map(document.getElementById('map-canvas'),    myOptions);

    //geolocation

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        var infowindow = new google.maps.InfoWindow({
            map: map,
            position: pos,
            content: "You are here"
        });

            map.setCenter(pos);
        }, function() {
            handleNoGeolocation(true);
        });
    }

        else {
        handleNoGeolocation(false);
    }

        function handleNoGeolocation(errorflag) {
        if (errorflag) {
            alert('Geolocation not supported');
            initialLocation = stockholm;
        }

        else {
            alert('balblababa');
            initialLocation = siberia;
        };

        var infowindow = new google.maps.InfoWindow(options);
        map.setCenter(options, position);
    }

    //stop geolocation

        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]
      ];

        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;

</script>
  • 0
    Ваша position окна установлена на неправильную переменную, установите ее в initialLocation . Кроме того, не уверен, что вы осведомлены, но вы объявляете карту дважды (как глобально, так и локально для initialize() - с этим нет проблем, поскольку все происходит в рамках initialize() но просто не очень хорошая практика).
  • 0
    Работает большое спасибо!
Показать ещё 1 комментарий
Теги:
google-maps

1 ответ

0

Благодаря Суви Вигнарахе.

Вот рабочий код!

    var map;
    var pos;

    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
    };
        var map = new google.maps.Map(document.getElementById('map-canvas'), myOptions);

    //geolocation

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        var infowindow = new google.maps.InfoWindow({
            map: map,
            position: initialLocation,
            content: "You are here"
        });

            map.setCenter(pos);
        },  function() {
            handleNoGeolocation(true);
        });
    }

        else {
        handleNoGeolocation(false);
    }

        function handleNoGeolocation(errorflag) {
        if (errorflag) {
            alert('Geolocation not supported');
            initialLocation = stockholm;
        }

        else {
            alert('balblababa');
            initialLocation = siberia;
        };

        var infowindow = new google.maps.InfoWindow(options);
        map.setCenter(options, position);
    }

    //stop geolocation

        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]
      ];

        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;

Ещё вопросы

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