2014-01-07 3 views
0

Я использую gmaps.js для API Google Maps. Целью является создание карты с географическим местоположением пользователя и создание нового маркера. Что-то вроде «Привет! Ты здесь!»Gmaps.js Создание нового маркера в зависимости от местоположения пользователя

Расположение карты и географии прекрасно, но создание нового маркера с текущими координатами пользователя становится для меня проблемой.

Это код:

// public/core.js 
//Creating map 
var map; 
$(document).ready(function(){ 
     map = new GMaps({ 
     el: '#map', 
     lat: 0, 
     lng: 0, 
     zoomControl : true, 
     zoomControlOpt: { 
      style : 'SMALL', 
      position: 'TOP_LEFT' 
     }, 
     panControl : false, 
     streetViewControl : false, 
     mapTypeControl: false, 
     overviewMapControl: false 
     }); 

// Define user location 
     GMaps.geolocate({ 
      success: function(position) { 
      map.setCenter(position.coords.latitude, position.coords.longitude); 
      }, 
      error: function(error) { 
      alert('Geolocation failed: '+error.message); 
      }, 
      not_supported: function() { 
      alert("Your browser does not support geolocation"); 
      } 
     }); 

// Creating marker of user location 
     map.addMarker({ 
      lat: position.coords.latitude, 
      lng: position.coords.longitude, 
      title: 'Lima', 
      click: function(e) { 
      alert('You clicked in this marker'); 
      }, 
      infoWindow: { 
       content: '<p>You are here!</p>' 
      } 
    }); 

}); 
+0

Вы говорите * Расположение карты и географии отлично работает, но создание нового маркера с текущими координатами пользователя становится для меня проблемой *, но что это * проблема? Вызывает ли код ошибку? Не выполняет ли функция? Является ли маркер неуместным? – Barney

+0

маркер не отображается вообще Непринятый ReferenceError: позиция не определена. Core.js: 36 event.returnValue устарел. Вместо этого используйте стандартное событие event.preventDefault(). – n00b43677

ответ

0

Проблема заключается в том, что ваш призыв к map.addMarkerпредполагает что функция выше, GMaps.geolocate, удалось, когда на самом деле position будет установлен только один раз success функция решает:

// public/core.js 
//Creating map 
var map; 
$(document).ready(function(){ 
     map = new GMaps({ 
     el: '#map', 
     lat: 0, 
     lng: 0, 
     zoomControl : true, 
     zoomControlOpt: { 
      style : 'SMALL', 
      position: 'TOP_LEFT' 
     }, 
     panControl : false, 
     streetViewControl : false, 
     mapTypeControl: false, 
     overviewMapControl: false 
     }); 

// Define user location 
     GMaps.geolocate({ 
      success: function(position) { 
      map.setCenter(position.coords.latitude, position.coords.longitude); 


     // Creating marker of user location 
       map.addMarker({ 
        lat: position.coords.latitude, 
        lng: position.coords.longitude, 
        title: 'Lima', 
        click: function(e) { 
        alert('You clicked in this marker'); 
        }, 
        infoWindow: { 
         content: '<p>You are here!</p>' 
        } 
      }); 
      }, 
      error: function(error) { 
      alert('Geolocation failed: '+error.message); 
      }, 
      not_supported: function() { 
      alert("Your browser does not support geolocation"); 
      } 
     }); 

}); 
+0

Ха-ха, это работает! Спасибо, сэр) – n00b43677

Смежные вопросы