有人可以告訴我如何將英國位置列表添加到谷歌地圖,然後使用郵政編碼搜索最近的位置。郵政編碼搜索最近的位置
我有一個谷歌API,任何人都可以請幫忙嗎?
非常感謝
更新:您的答覆非常感謝。
我有一個帶有地址的CSV文件,是否有可能爲每個地址動態獲取地理編碼,並填充我的谷歌地圖?
我目前正在查詢我的數據庫以獲取存儲的地理編碼。
這裏是我的示例:
http://www.mharrisweb.co.uk/maps/map.html
有人可以告訴我如何將英國位置列表添加到谷歌地圖,然後使用郵政編碼搜索最近的位置。郵政編碼搜索最近的位置
我有一個谷歌API,任何人都可以請幫忙嗎?
非常感謝
更新:您的答覆非常感謝。
我有一個帶有地址的CSV文件,是否有可能爲每個地址動態獲取地理編碼,並填充我的谷歌地圖?
我目前正在查詢我的數據庫以獲取存儲的地理編碼。
這裏是我的示例:
http://www.mharrisweb.co.uk/maps/map.html
我想你想,當你說「添加位置列表」添加標記,以便做到這一點,你可以做一個循環,並增加對各定位標記。
你可以做這樣的事情:
function addMarker (locations){
for(var i =0; i< locations.length; i ++)
{
// Create a new location
var loc = new google.maps.LatLng(locations[i].latitude, locations[i].longitude);
// Create the marker options
var markerOptions = {
map: yourMap,
position: loc
};
// Add the marker on map
var marker = new google.maps.Marker(markerOptions);
}
}
,你有你的地圖上的所有位置。
你說你想做一個郵政編碼搜索找到最近的。
所以我覺得這個link可以讓你感興趣的做到這一點。
希望它有幫助。
/*jslint browser: true */
/*global google */
function toRad(value) {
"use strict";
/** Converts numeric degrees to radians */
return value * (Math.PI/180);
}
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2, unit) {
"use strict";
var a, c, d, R, dLat, dLon;
R = (unit === 'mi') ? 3958.75587 : (unit === 'ft') ? 20902230.9711286 : 6371; // Mean radius of the earth in km
dLat = toRad(lat2 - lat1); // toRad below
dLon = toRad(lon2 - lon1);
a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon/2) * Math.sin(dLon/2);
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
d = R * c; // Distance in km
return d;
}
function calcDistance(checkCoords, lat, lng) {
"use strict";
var closestLatLng, distance = 7000, i, latlng;
for (i = 0; i < checkCoords.length; i = i + 1) {
latlng = checkCoords[i].split(",");
if (getDistanceFromLatLonInKm(latlng[0], latlng[1], lat, lng) < distance) {
distance = getDistanceFromLatLonInKm(latlng[0], latlng[1], lat, lng);
closestLatLng = [latlng[0], latlng[1]];
}
}
return closestLatLng;
}
function addMarker(lat, lng, title, map) {
"use strict";
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
title: title
});
marker.setMap(map);
return (lat + ',' + lng);
}
function show_map(lat, lng) {
"use strict";
var checkCoords = [], closestLatLng, latlng, map, myOptions;
latlng = new google.maps.LatLng(lat, lng);
myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_container"), myOptions);
checkCoords[0] = addMarker(51.477118, -0.000732, 'Royal Observatory, Greenwich, London', map);
checkCoords[1] = addMarker(38.92126, -77.066442, 'US Naval Observatory, Washington, DC', map);
checkCoords[2] = addMarker(48.853499, 2.348090, 'Notre Dame Cathedral, Paris', map);
closestLatLng = calcDistance(checkCoords, lat, lng);
map.panTo(new google.maps.LatLng(closestLatLng[0], closestLatLng[1]));
}
function getLatLng(postcode) {
"use strict";
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': postcode
}, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
show_map(results[0].geometry.location.lat(), results[0].geometry.location.lng());
}
});
}
function get_location() {
"use strict";
document.getElementById('map').innerHTML = '<form id="postcodeEntry" method="post" action="#" onsubmit="getLatLng(this.postcode.value);return false;">'
+ '<fieldset>'
+ '<label for="postcode">Enter your postcode for directions</label>'
+ '<input type="text" name="postcode" id="postcode" />' + '<input type="submit" />'
+ '</fieldset>'
+ '</form>'
+ '<div id="map_container" style="width:300px;height:300px">Map will appear after postcode entry</div>';
}
get_location();
*編輯通過JSLint的
這就是你所追求的一種基本形式。您可以在此(更新)jsfiddle上看到它的行動。