angular定位指令

/**
 获取地理位置的服务
 */
    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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值