新的編碼,但有一個想法,使我的工作更輕鬆的工作 - 也許我太雄心勃勃!php和谷歌地圖api
我發現了一些代碼,允許通過變量在代碼中放置的谷歌地圖上顯示推針 - 郵編 - 我需要將郵編從一個Excel CSV文件傳入代碼,然後顯示在地圖。
原始代碼不是我的,但我粘貼在這裏顯示我的查詢的基礎。 這不是PHP,但覺得我想用PHP鏈接到Excel - 如果這是錯誤的,請隨時指出我在正確的方向!
<!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 ('BA2 3RA');
addPostCode ('BN1 1AB');
addPostCode ('BA3 3JG');
}
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}, function(results, 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>
1)excel文件的擴展名爲.xsl或.xsls。 csv是另一種在Excel中可讀的文件類型。 2)要訪問csv數據,請使用ajax函數來使用您所使用的php代碼。要在php中檢索csv數據,在php中有一個名爲fgetcsv()的函數,請在此處閱讀更多信息:http://www.w3schools.com/php/func_filesystem_fgetcsv.asp 3)不要期望我們編寫代碼你告訴我們你做了什麼,除了在這裏複製別人的代碼,並告訴我們結果和你的問題。我很樂意提供幫助。 4)您在這裏沒有問題,AFAI可以看到。 –
道歉,如果我聽起來像我只是想你提供一個完整的解決方案 - 這不是我的意圖 - 我已經適應了上述代碼以適應我的需要,但很難閱讀包含約10個郵政編碼的csv文件 - 我需要此代碼顯示addPostCode('BN1 1AB');它從csv文件中獲取郵編,假設它是可能的,因爲大多數情況都是這樣,但是很難得到答案 - 我會繼續堅持下去:) – PaulyboyUK
同樣,目前還不清楚,是否要替換'addPostCode(' BN1 1AB');'來自您的CSV文件數據的結果? –