我很难找到有关如何在谷歌地图中实现此效果的最新相关信息.我希望有人在这个问题上比我更了解,并指出我正确的方向..
问题:
>我需要通过邮政编码在地图上绘制X量的针脚.
>第二步是输入我自己的邮政编码并生成第一步中绘制的最接近的5个邮政编码的列表.
解决方法
此代码将告诉您最接近您在框中输入的邮政编码.我相信你可以从这里调整它以获得前5名的成绩.
我能够适应Geocoding sample code:
<!DOCTYPE html> <html> <head> <Meta name="viewport" content="initial-scale=1.0,user-scalable=no"/> <Meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Google Maps JavaScript API v3 Example: Geocoding Simple</title> <link href="http://code.google.com/apis/maps/documentation/javascript/examples/standard.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var geocoder; var map; var markers = []; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(40.768505,-111.853244); var myOptions = { zoom: 8,center: latlng,mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); addPostCode('84101'); addPostCode('84102'); addPostCode('84103'); addPostCode('84104'); addPostCode('84105'); } function addPostCode(zip) { geocoder.geocode( { 'address': zip},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,name: zip }); markers.push(marker); } else { alert("Geocode was not successful for the following reason: " + status); } }); } function checkZip(zip) { var distance = Number.MAX_VALUE; var index = 0; geocoder.geocode( { 'address': zip},status) { if (status == google.maps.GeocoderStatus.OK) { for(ix=0; ix< markers.length; ix++) { var tmp = getDistance(results[0].geometry.location,markers[ix].position); if (tmp < distance) { distance = tmp; index = ix; } } alert('nearest zipcode is :' + markers[index].name); } }); } function getDistance(latlng1,latlng2) { var R = 6371; // Radius of the earth in km var dLat = (latlng2.lat()-latlng1.lat()) * Math.PI / 180; // Javascript functions in radians var dLon = (latlng2.lng()-latlng1.lng()) * Math.PI / 180; var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(latlng1.lat() * Math.PI / 180) * Math.cos(latlng2.lat() * Math.PI / 180) * Math.sin(dLon/2) * Math.sin(dLon/2); var c = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); var d = R * c; // Distance in km d = d * 0.621371192; // convert to miles return d; } </script> </head> <body onload="initialize()"> <div> <input id="address" type="textBox" value=""> <input type="button" value="Geocode" onclick="checkZip(getElementById('address').value)"> </div> <div id="map_canvas" style="height:90%"></div> </body> </html>