2013-12-07 4 views
0

В настоящее время я делаю сайт с использованием API Карт Google и библиотеки Google Адресов. Когда я впервые сделал это без функции Google Адресов, карта работает нормально. Но когда я добавил функции для Google Адресов, эта часть не работает. Код здесь:Поиск радиуса в Google Места и геокодер

function initialize() 
{ 
var start = new google.maps.LatLng(54.00, -3.00); 

var service; 

var mapOptions = { 
    mapTypeId: google.maps.MapTypeId.TERRAIN, 
    center: start, 
    zoom: 4 
}; 

var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

var geocoder = new google.maps.Geocoder(); 

var address = $("#ilocation").val(); 

var coords; 



geocoder.geocode({'address': address}, 
    function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) 
     { 
      var bounds = new google.maps.LatLngBounds(); 
      document.write(bounds.extend(results[0].geometry.location)); 
      map.fitBounds(bounds); 
      new google.maps.Marker(
      { 
       position:results[0].geometry.location, 
       map: map 
      } 
      ); 

     } 

coords = results[0].geometry.location; 

    } 

); 

alert(coords); 

var request = { 
location: coords, 
radius: '500', 
types: ['store'] 
}; 

service = new google.maps.places.PlacesService(map); 
service.nearbySearch(request, callback); 

function callback(results, status) { 
if (status == google.maps.places.PlacesServiceStatus.OK) { 
for (var i = 0; i < results.length; i++) { 
    var place = results[i]; 
    createMarker(results[i]); 
} 
} 
} 

function createMarker(place) { 
var placeLoc = place.geometry.location; 
var marker = new google.maps.Marker({ 
map: map, 
position: place.geometry.location 
}); 

google.maps.event.addListener(marker, 'click', function() { 
infowindow.setContent(place.name); 
infowindow.open(map, this); 
}); 
} 

}; 

не имеют большой опыт работы с JavaScript, так что может быть что-то очень простое, что я пропавшими без вести. Благодарю.

+0

Ошибка, возникающая в моей консоли, говорит: «Невозможно прочитать свойство« PlaceServices »неопределенного, но я определил свою карту в верхней части – user3076590

+0

, загрузили ли вы библиотеку сервиса google?' Http: //maps.googleapis.com/maps/api/js? libraries = places' И вы создали функцию 'createMarker'? –

+0

У меня есть библиотека, но у меня нет функции createMarker. Зачем нужен маркер? – user3076590

ответ

0

Геокодер получает ваше местоположение от текстовой строки, теперь вам нужно передать эту информацию о местоположении в свои функциональные возможности. Я завернул код google в функцию и вызвал ее из геокодера.

.................. 
var address = '12 Crest View Ct'; 

geocoder.geocode({'address': address}, 
    function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK){ 
     loc = results[0].geometry.location; 

      var bounds = new google.maps.LatLngBounds(); 
      document.write(bounds.extend(results[0].geometry.location)); 
      map.fitBounds(bounds); 
      new google.maps.Marker({ 
       position:results[0].geometry.location, 
       map: map 
      }); 
     place(loc); //here is the function call 
     } 

    } 
); 

Теперь функция место, как показано ниже:

function place(loc){ 
    var request = { 
    location: new google.maps.LatLng(loc.pb, loc.qb), 
    radius: '500', 
    types: ['store'], 
    //keyword: address 

    }; 

    service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 

    function callback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
    for (var i = 0; i < results.length; i++) { 
     var place = results[i]; 
     createMarker(results[i]); 
    } 
    } 
    } 

    function createMarker(place) { 
    console.log(place) 
     var placeLoc = place.geometry.location; 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: place.geometry.location 
     }); 

     google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent(place.name); 
     infowindow.open(map, this); 
     }); 
    } 

} 

Я создал рабочую демо here Перейти к верхней правой нижней части страницы и нажмите Edit JS Bin, чтобы увидеть исходный код , Надеюсь, это поможет ...

+0

Ваше решение отлично работает. Я только что понял то же самое. Благодаря! – user3076590

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