Google Maps V3 snap to nearest Street
When I click into a map I want the marker to get snaped to the nearest street. There is a good exmaple here: http://econym.org.uk/gmap/example_snappath.开发者_高级运维htm (Main Page:http://econym.org.uk/gmap/snap.htm). However - this example is for google maps version 2. Is there a way to do this in v3?
The example that you have given gets the result by doing a direction lookup and then getting the first location from it. In api v3 this is accomplished with the following code where "map" is the name of your map
var directionsService = new google.maps.DirectionsService();
google.maps.event.addListener(map, 'click', function(event) {
var request = {
origin:event.latLng,
destination:event.latLng,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var marker = new google.maps.Marker({
position: response.routes[0].legs[0].start_location,
map: map,
title:"Hello World!"
});
}
});
});
many thanks Revolution42 it works quite nice
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?key=YOU API KEY&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
var directionsService = new google.maps.DirectionsService();
google.maps.event.addListener(map, 'click', function(event) {
var request = {
origin:event.latLng,
destination:event.latLng,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var marker = new google.maps.Marker({
position: response.routes[0].legs[0].start_location,
map: map,
title:"Hello World!"
});
}
});
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
精彩评论