所以使用Angular2和Ionic我会像这样得到用户lat / long:
this.geolocation.getCurrentPosition({enableHighAccuracy: true}).then((resp) => {
this.userLocation.lat = resp.coords.latitude;
this.userLocation.lng = resp.coords.longitude;
})
我也知道Google的geocode
api从lat / long(Connect to Azure AD-secured APIs in SharePoint Framework solutions)
但是我喜欢要做的事情就是让他们离他们的纬度/经度最近的大学用户。我做了一些谷歌搜索,我似乎无法找到提供它的api。
现在,我正在做的是,我有一个数据库,我存储大学的lat / long及其名称:
http://maps.googleapis.com/maps/api/geocode/json?latlng=35.91,-79.05&sensor=true
我运行一个脚本来检查用户是否距离unversitys lat / long 7英里:
var rad = function(x) {
return x * Math.PI / 180;
};
var getDistance = function(p1, p2) {
var R = 6378137; // Earth’s mean radius in meter
var dLat = rad(p2.lat - p1.lat);
var dLong = rad(p2.lng - p1.lng);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(rad(p1.lat)) * Math.cos(rad(p2.lat)) *
Math.sin(dLong / 2) * Math.sin(dLong / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
return d; // returns the distance in meter
};
getDistance(this.userLocation, databaseLocation); // returns distance between 2 points in meters
如果它返回的时间少于7英里,我会显示大学的名称..
所以,这很有用,但是我觉得它非常低效,因为我必须手动输入大学的纬度/经度和名称,然后我运行一个循环来检查每所大学,直到它找到最近...
我喜欢的只是一个基于lat / long返回最近的大学的API ......但我想我可以用php创建那个api,只需在服务器上进行这些计算..
任何想法/建议?谢谢!