|
@@ -31,8 +31,11 @@ class Map extends Field
|
|
|
case 'yandex':
|
|
|
$js = '//api-maps.yandex.ru/2.1/?lang=ru_RU';
|
|
|
break;
|
|
|
+ case 'baidu':
|
|
|
+ $js = '//api.map.baidu.com/api?v=2.0&ak=' . env('BAIDU_MAP_API_KEY');
|
|
|
+ break;
|
|
|
default:
|
|
|
- $js = '//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key='.env('GOOGLE_API_KEY');
|
|
|
+ $js = '//api.map.baidu.com/api?v=2.0&ak=' . env('BAIDU_MAP_API_KEY');
|
|
|
}
|
|
|
|
|
|
Admin::js($js);
|
|
@@ -62,8 +65,11 @@ class Map extends Field
|
|
|
case 'yandex':
|
|
|
$this->useYandexMap();
|
|
|
break;
|
|
|
+ case 'baidu':
|
|
|
+ $this->useBaiduMap();
|
|
|
+ break;
|
|
|
default:
|
|
|
- $this->useGoogleMap();
|
|
|
+ $this->useBaiduMap();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -191,4 +197,78 @@ JS;
|
|
|
})();
|
|
|
JS;
|
|
|
}
|
|
|
+
|
|
|
+ public function useBaiduMap()
|
|
|
+ {
|
|
|
+ $this->script = <<<JS
|
|
|
+ (function() {
|
|
|
+ function initBaiduMap(name) {
|
|
|
+ var lat = $('#{$this->id['lat']}');
|
|
|
+ var lng = $('#{$this->id['lng']}');
|
|
|
+
|
|
|
+ var map = new BMap.Map("map_"+name);
|
|
|
+ var point = new BMap.Point(lng.val(), lat.val());
|
|
|
+ map.centerAndZoom(point, 15);
|
|
|
+ map.enableScrollWheelZoom(true);
|
|
|
+
|
|
|
+ var marker = new BMap.Marker(point);
|
|
|
+ map.addOverlay(marker);
|
|
|
+ marker.enableDragging();
|
|
|
+
|
|
|
+ if( ! lat.val() || ! lng.val()) {
|
|
|
+ var geolocation = new BMap.Geolocation();
|
|
|
+ geolocation.getCurrentPosition(function(e){
|
|
|
+ if(this.getStatus() == BMAP_STATUS_SUCCESS){
|
|
|
+ map.panTo(e.point);
|
|
|
+ marker.setPosition(e.point);
|
|
|
+
|
|
|
+ lat.val(e.point.lat);
|
|
|
+ lng.val(e.point.lng);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ console.log('failed'+this.getStatus());
|
|
|
+ }
|
|
|
+ },{enableHighAccuracy: true})
|
|
|
+ }
|
|
|
+
|
|
|
+ map.addEventListener("click", function(e){
|
|
|
+ marker.setPosition(e.point);
|
|
|
+ lat.val(e.point.lat);
|
|
|
+ lng.val(e.point.lng);
|
|
|
+ });
|
|
|
+
|
|
|
+ marker.addEventListener("dragend", function(e){
|
|
|
+ lat.val(e.point.lat);
|
|
|
+ lng.val(e.point.lng);
|
|
|
+ });
|
|
|
+ var ac = new BMap.Autocomplete(
|
|
|
+ {"input" : "search-{$this->id['lat']}{$this->id['lng']}"
|
|
|
+ ,"location" : map
|
|
|
+ });
|
|
|
+ var address;
|
|
|
+ ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
|
|
|
+ var _value = e.item.value;
|
|
|
+ address = _value.province + _value.city + _value.district + _value.street + _value.business;
|
|
|
+ setPlace();
|
|
|
+ });
|
|
|
+ function setPlace(){
|
|
|
+ function myFun(){
|
|
|
+ var pp = local.getResults().getPoi(0).point;
|
|
|
+ map.centerAndZoom(pp, 15);
|
|
|
+ marker.setPosition(pp);
|
|
|
+ lat.val(pp.lat);
|
|
|
+ lng.val(pp.lng);
|
|
|
+ }
|
|
|
+ var local = new BMap.LocalSearch(map, {
|
|
|
+ onSearchComplete: myFun
|
|
|
+ });
|
|
|
+ local.search(address);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ initBaiduMap('{$this->id['lat']}{$this->id['lng']}');
|
|
|
+ })()
|
|
|
+JS;
|
|
|
+
|
|
|
+ }
|
|
|
}
|