Google Maps API - 地理编码和搜索附近

问题描述:

我正在尝试合并GOOGLE地理编码器脚本和“搜索附近”脚本。我似乎无法成功合并它。帮帮我?Google Maps API - 地理编码和搜索附近

地址解析器脚本就在这里:

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

所以我在这里张贴,因为我不知道如何将它们合并。我试图将这些脚本合并在一起,但我无法使它工作。有任何想法吗?

谢谢。

可能是下面这张草图。 不性感,但工程。

不要忘记包含地方库。

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/

编辑:

或者你可以简单地复制并粘贴此HTML文件,这应该工作。

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

编辑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 2014-09-28 06:04:39

+0

你在Dreamweaver中不工作的意思是什么?我不再喜欢这个工具,你是否包含地方文库?除非你不会看到附近的地方,否则将需要它们。为了帮助我,我需要你的代码。 – devbnz 2014-09-28 11:46:23

+0

答案更新与HTML文件 - 应该在任何平台上工作>> http://lab.sourcloud.com/*/26071099/ – devbnz 2014-09-28 12:31:08