| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- (function() {
- 'use strict';
- angular
- .module('app')
- .directive('gaodeMap', Directive);
- Directive.$inject = [];
- function Directive() {
- var directive = {
- link: link,
- restrict: 'E',
- template: '<div id="container"></div>',
- 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) {}
- });
- }
- }
- })();
|