2015-04-18 51 views
2

我想創建一個基於位置的學術網站(引導項目),其中所述問題只對預先指定的半徑內的人可見。我可以用HTML,CSS和當前學習JavaScript和PHP進行編碼。任何人願意給我一些指針? (代碼資源,相關模板或有用的文獻)學生的基於位置的網絡網站

+0

這似乎是一個大項目。如果你想正確地做到這一點,我建議看看php框架(例如symfony2)。在這個例子中,你可以得到用戶的IP地址:http://stackoverflow.com/questions/9029757/how-do-i-get-the-user-ip-address-in-symfony2-controller和IP你可以找到他們的位置。一旦你有了它們的位置,你可以通過xmlhttprequest(ajax)發送相應的視圖(或者是一個json,如果你正在通過xmlhttprequest(ajax))來包含問題的信息。 – rottenoats

+0

我有一個月的時間(一天16個小時)來做到這一點,希望這已經足夠了。對於前端,我正在尋找一個簡單的免費源代碼模板,以減少整體工作,因爲功能優先。非常感謝,Grimbode。 –

回答

0

您可以使用公式Haversine找到貝氏位置的距離。以下JavaScript函數用於計算地理座標與中心位置之間的距離。只有當距離小於半徑時才允許進入。

function deg2rad(degrees){ 
radians = degrees * (Math.PI/180); 
return radians; 
} 

function Haversine(lat1,lon1,lat2,lon2) { 
    deltaLat = lat2 - lat1 ; 
    deltaLon = lon2 - lon1 ; 
    earthRadius = 3959; // in miles 6371 in meters. 
    alpha = deltaLat/2; 
    beta  = deltaLon/2; 
    a  = Math.sin(deg2rad(alpha)) * Math.sin(deg2rad(alpha)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(deg2rad(beta)) * Math.sin(deg2rad(beta)) ; 
    c  = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    distance = earthRadius * c; 
    return distance.toFixed(2); 
} 
+0

謝謝大衛的詳細code.Really欣賞它。 –