2014-09-27 4 views
1

Я пытаюсь объединить сценарий геокодирования GOOGLE и скрипт поиска «поблизости». Я не могу слить его успешно. Помогите?API Карт Google - Геокодирование и поиск поблизости

Геокодер сценарий лежит здесь:

var geocoder; 
var map; 
function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var mapOptions = { 
    zoom: 8, 
    center: latlng 
    } 
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
} 

function codeAddress() { 
    var address = document.getElementById('address').value; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

И поиск рядом сценарий лежит здесь:

var map; 
var infowindow; 

function initialize() { 
    var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); 

    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    center: pyrmont, 
    zoom: 15 
    }); 

    var request = { 
    location: pyrmont, 
    radius: 500, 
    types: ['store'] 
    }; 
    infowindow = new google.maps.InfoWindow(); 
    var 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++) { 
     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); 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

Так я отправляю здесь, потому что я понятия не имею, как объединить их. Я попытался объединить скрипты, но я не мог заставить его работать. Есть идеи?

Спасибо.

ответ

1

Может быть что-то вроде этого эскиза ниже. Не сексуально, но работает.

Не забудьте указать места, где есть библиотеки.

JS

var geocoder; 
var map; 
var infowindow; 
var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); 

function initialize() { 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var mapOptions = { 
    zoom: 8, 
    center: latlng 
    } 

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

codeAddress(); 

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

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


function codeAddress() { 
    geocoder = new google.maps.Geocoder(); 
    var address = '100 Murray St, Pyrmont NSW, Australia'; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 
} 

function callback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
    for (var i = 0; i < results.length; 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); 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

http://jsfiddle.net/iambnz/c9ovns0o/

EDIT:

Или вы можете просто скопировать и вставить этот HTML-файл, это должно работать.

http://lab.sourcloud.com/stackoverflow/26071099/

EDIT 2:

Первый геокод адрес, а затем показать места поблизости.

var geocoder; 
var map; 
var infowindow; 
//var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); 
var nearbysearchloc = ''; 

function initialize() { 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var mapOptions = { 
    zoom: 8, 
    center: latlng 
    } 
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
codeAddress(); 
} 

function codeAddress() { 
    geocoder = new google.maps.Geocoder(); 
    var address = '100 Murray St, Pyrmont NSW, Australia'; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location);   
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    ParseLocation(results[0].geometry.location); 
    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 
} 

function callback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
    for (var i = 0; i < results.length; 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); 
    }); 
} 

function ParseLocation(location) { 
     var lat = location.lat().toString().substr(0, 12); 
     var lng = location.lng().toString().substr(0, 12); 

nearbysearchloc = new google.maps.LatLng(lat, lng); 
ShowPlacesAroundMe(nearbysearchloc); 
} 

function ShowPlacesAroundMe(location){ 
var request = { 
    location: location, 
    radius: 500, 
    types: ['store'] 
    }; 
    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback);  

} 

google.maps.event.addDomListener(window, 'load', initialize); 

http://jsfiddle.net/iambnz/c0omhyep/

+0

Благодарность за BNZ вклад, но я не могу показаться, чтобы получить его работу в Dreamweaver. У него нет проблем при геокодировании местоположения, но он не будет искать поблизости ... – Tomothy

+0

Что вы подразумеваете, не работая в Dreamweaver? Я уже не знаком с этим инструментом, и у вас есть места в библиотеках? Они понадобятся, если вы не увидите поблизости. Чтобы помочь вам, мне нужен ваш код. – devbnz

+0

ответ обновляется с помощью html-файла - должен работать на любой платформе >> http://lab.sourcloud.com/stackoverflow/26071099/ – devbnz

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