获取地理位置的服务
*/
app.factory('geoFactory', ['$http','$q', function($http,$q) {
function getGeo(){
var def = $q.defer();
var options = {
enableHighAccuracy: true
}
navigator.geolocation.getCurrentPosition(function(position){
var pc = position.coords,
lat = pc.latitude,
lng = pc.longitude;
$http.jsonp('http://api.map.baidu.com/geoconv/v1/?coords='+lng+','+lat+'&from=1&to=5&ak=k2hXcaKk2NSwLQzrZvn8WQcB&callback=JSON_CALLBACK').success(
function(data){
$http.jsonp('http://api.map.baidu.com/geocoder/v2/?ak=k2hXcaKk2NSwLQzrZvn8WQcB&callback=?&location='+data.result[0].y+','+data.result[0].x+'&output=json&pois=0&callback=JSON_CALLBACK').success(function(result) {
def.resolve(result);
})
}
)
},function(error){
switch(error.code)
{
case error.PERMISSION_DENIED:
alert("请打开定位功能!")
break;
case error.POSITION_UNAVAILABLE:
alert("不支持定位服务!")
break;
case error.TIMEOUT:
alert("请求超时!")
break;
case error.UNKNOWN_ERROR:
alert("未知异常!")
break;
}
},options)
return def.promise;
}
return {
getGeo : getGeo
}
}])
//指令部分
app.directive('geo', ['geoFactory',function (geoFactory) {return {
restrict: 'AE',
link:function(scope, element, attrs){
function getGeo(){
$("#loaction_wrap").text("正在定位...");
geoFactory.getGeo()
.then(function(re) {
$(".geo").text(re.result.formatted_address);
});
}
getGeo();
scope.refresh = function(){
getGeo()
}
}
}
}])
//html部分
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta http-equiv="Cache-Control" content="no-cache">
<title>定位服务指令</title>
</head>
<style>
#loaction_wrap{
height: 50px;
line-height: 50px;
width: 200px;
background: #eee;
margin: 50px auto;
text-align: center;
color: #666;
font-size: 14px;
cursor: pointer;
}
#allmap{
border: 1px solid red;
height: 100px;
width: 100px;
}
</style>
<body ng-app="myApp">
<div id="loaction_wrap" geo class="geo" ng-click="refresh()">
正在定位
</div>
<div id="allmap"></div>
<script src="./js/jquery.js"></script>
<script src="./js/angular.js"></script>
<script src="./js/app.js"></script>
<script src="./js/service.js"></script>
<script src="./js/directive.js"></script>
</body>
</html>
云盘
http://pan.baidu.com/s/1i4CamXJ