(function() { 'use strict'; angular .module('app') .directive('gaodeMap', Directive); Directive.$inject = []; function Directive() { var directive = { link: link, restrict: 'E', template: '
', replace: true, scope: false // scope: { // options: '=' // } }; return directive; function link(scope, element, attrs) { var map, geolocation, marker, geocoder; //加载地图,调用浏览器定位服务 map = new AMap.Map('container', { resizeEnable: true, zoom: 17 }); map.plugin('AMap.Geolocation', function() { geolocation = new AMap.Geolocation({ enableHighAccuracy: true, //是否使用高精度定位,默认:true timeout: 10000, //超过10秒后停止定位,默认:无穷大 maximumAge: 0, //定位结果缓存0毫秒,默认:0 convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true showButton: true, //显示定位按钮,默认:true buttonPosition: 'RB', //定位按钮停靠位置,默认:'LB',左下角 buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false useNative: true }); map.addControl(geolocation); geolocation.getCurrentPosition(); AMap.event.addListener(geolocation, 'complete', onComplete); //返回定位信息 AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息 function onComplete(data) { map.clearMap(); scope.position = data; var geocoder = new AMap.Geocoder({ radius: 1000, extensions: "all" }); var marker = new AMap.Marker({ map: map, bubble: false, visible: true }); geocoder.getAddress(data.position, function(status, result) { if (status == 'complete' && result.info === 'OK') { //console.log(result); $("#result")[0][0].textContent = result.regeocode.formattedAddress.substring(6); $("#result")[0][1].textContent = result.regeocode.pois[0].name; $("#result")[0][2].textContent = result.regeocode.pois[1].name; } }); map.on('click', function(e) { marker.setPosition(e.lnglat); geocoder.getAddress(e.lnglat, function(status, result) { if (status == 'complete' && result.info === 'OK') { //console.log($("#result")); //var sub = result.regeocode.formattedAddress.indexOf(result.regeocode.aois[0].name) $("#result")[0][0].textContent = result.regeocode.formattedAddress.substring(6); $("#result")[0][1].textContent = result.regeocode.pois[0].name; $("#result")[0][2].textContent = result.regeocode.pois[1].name; $("#result")[0].selectedIndex = 0; } }) }); } function onError(data) {} }); } } })();