高德地图需登录需注册登录,在个人中心中添加项目,拿到认证的一串web id。
app.service("Map_g",function ($q) { this.getMessage=function (map) { //定位系统 var defer = $q.defer(); map.plugin('AMap.Geolocation', function() { geolocation = new AMap.Geolocation({ enableHighAccuracy: true, timeout: 10000, buttonOffset: new AMap.Pixel(10, 20), zoomToAccuracy: false, buttonPosition:'RB' }); map.addControl(geolocation); geolocation.getCurrentPosition(); AMap.event.addListener(geolocation, 'complete', onComplete); AMap.event.addListener(geolocation, 'error', onError); }); function onComplete(data) { defer.resolve(data); } function onError(data) { defer.reject(data); } return defer.promise; } ; this.coverOperate=function (map,lang,lat,name) { //覆盖物 var marker = new AMap.Marker({}); marker.setMap(map); var markerContent = document.createElement("div"); markerContent.className="markWrap"; var markerImg = document.createElement("img"); markerImg.className = "markerlnglat"; markerImg.src = "img/48.png"; markerContent.appendChild(markerImg); var markerSpan = document.createElement("span"); markerSpan.className = 'marker'; markerSpan.innerHTML = name; markerContent.appendChild(markerSpan); marker.setContent(markerContent); marker.setPosition([lang,lat]); }; }); $scope.getMap = function() { //定位开始,获取地理位置信息,拿到经纬度进行覆盖物操作。 var geolocation; $scope.map = new AMap.Map('allmap', { resizeEnable: true }); Map_g.getMessage($scope.map).then(function (data) { if(data.addressComponent != undefined && data.addressComponent != null && data.addressComponent.district){ $scope.isOpenLocation = false; $scope.original = {lang:data.position.getLng(),lat:data.position.getLat()}; $scope.require(data.addressComponent.province,data.addressComponent.city,data.addressComponent.district); $scope.headerName = data.addressComponent.district; $scope.$parent.district = data.addressComponent.district; }else{ $scope.getAllShops(); $scope.isOpenLocation = true; } },function (data) { angular.element("#gif").hide(); $scope.getAllShops(); $scope.isOpenLocation = true; }); }; $scope.getMap(); //$scope.map = $scope.map = new AMap.Map('allmap', { resizeEnable: true}); //longitude ,latitude 经纬度 //name 覆盖物展示文字 Map_g.coverOperate($scope.map,val.longitude,val.latitude,val.name); //调用函数实现覆盖物的操做。 //计算两地点的距离 var lnglat = new AMap.LngLat($scope.original.lang,$scope.original.lat); val.distance=parseInt(lnglat.distance([val.longitude,val.latitude])) + "米";