You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
274 lines
8.6 KiB
274 lines
8.6 KiB
<style> |
|
.amap-icon img, |
|
.amap-marker-content img{ |
|
width: 25px; |
|
height: 34px; |
|
} |
|
</style> |
|
<div class="{{$viewClass['form-group']}}"> |
|
|
|
<label class="{{$viewClass['label']}} control-label">{!! $label !!}</label> |
|
|
|
<div class="{{$viewClass['field']}}"> |
|
|
|
@include('admin::form.error') |
|
|
|
@if($type === 'baidu' || $type === 'amap') |
|
<div class="row mb-1"> |
|
<div class="col-md-5 col-md-offset-3"> |
|
<div class="input-group"> |
|
<input type="text" placeholder="{{ trans('admin.search') }}" class="form-control" id="{{ $searchId }}"> |
|
@if($type === 'baidu') |
|
<span class="input-group-btn"> |
|
<button type="button" class="btn btn-primary btn-flat"><i class="fa fa-search"></i></button> |
|
</span> |
|
@endif |
|
</div> |
|
</div> |
|
</div> |
|
@endif |
|
|
|
<div class="{{ $class }}"> |
|
<div class="form-map" style="width: 100%;height: {{ $height }}"></div> |
|
<input type="hidden" class="form-lat" name="{{ $name['lat'] }}" value="{{ $value['lat'] ?? null }}" {!! $attributes !!} /> |
|
<input type="hidden" class="form-lng" name="{{$name['lng']}}" value="{{ $value['lng'] ?? null }}" {!! $attributes !!} /> |
|
</div> |
|
|
|
@include('admin::form.help-block') |
|
|
|
</div> |
|
</div> |
|
<script init="{!! $selector !!}"> |
|
var lat = $this.find('.form-lat'), |
|
lng = $this.find('.form-lng'), |
|
container = $this.find('.form-map'), |
|
mapId = "_" + Dcat.helpers.random(); |
|
|
|
container.attr('id', mapId); |
|
|
|
@if($type === 'google') |
|
function initGoogleMap() { |
|
var LatLng = new google.maps.LatLng(lat.val(), lng.val()); |
|
|
|
var options = { |
|
zoom: 13, |
|
center: LatLng, |
|
panControl: false, |
|
zoomControl: true, |
|
scaleControl: true, |
|
mapTypeId: google.maps.MapTypeId.ROADMAP |
|
} |
|
|
|
var map = new google.maps.Map(container[0], options); |
|
|
|
var marker = new google.maps.Marker({ |
|
position: LatLng, |
|
map: map, |
|
title: 'Drag Me!', |
|
draggable: true |
|
}); |
|
|
|
google.maps.event.addListener(marker, 'dragend', function (event) { |
|
lat.val(event.latLng.lat()); |
|
lng.val(event.latLng.lng()); |
|
}); |
|
} |
|
|
|
initGoogleMap(); |
|
@endif |
|
|
|
@if($type === 'tencent') |
|
function initTencentMap() { |
|
var center = new qq.maps.LatLng(lat.val(), lng.val()); |
|
|
|
var map = new qq.maps.Map(container[0], { |
|
center: center, |
|
zoom: 13 |
|
}); |
|
|
|
var marker = new qq.maps.Marker({ |
|
position: center, |
|
draggable: true, |
|
map: map |
|
}); |
|
|
|
if( ! lat.val() || ! lng.val()) { |
|
var citylocation = new qq.maps.CityService({ |
|
complete : function(result){ |
|
map.setCenter(result.detail.latLng); |
|
marker.setPosition(result.detail.latLng); |
|
} |
|
}); |
|
|
|
citylocation.searchLocalCity(); |
|
} |
|
|
|
qq.maps.event.addListener(map, 'click', function(event) { |
|
marker.setPosition(event.latLng); |
|
}); |
|
|
|
qq.maps.event.addListener(marker, 'position_changed', function(event) { |
|
var position = marker.getPosition(); |
|
lat.val(position.getLat()); |
|
lng.val(position.getLng()); |
|
}); |
|
} |
|
|
|
initTencentMap(); |
|
@endif |
|
|
|
|
|
@if($type === 'yandex') |
|
function initYandexMap() { |
|
ymaps.ready(function(){ |
|
var myMap = new ymaps.Map(mapId, { |
|
center: [lat.val(), lng.val()], |
|
zoom: 18 |
|
}); |
|
|
|
var myPlacemark = new ymaps.Placemark([lat.val(), lng.val()], { |
|
}, { |
|
preset: 'islands#redDotIcon', |
|
draggable: true |
|
}); |
|
|
|
myPlacemark.events.add(['dragend'], function (e) { |
|
lat.val(myPlacemark.geometry.getCoordinates()[0]); |
|
lng.val(myPlacemark.geometry.getCoordinates()[1]); |
|
}); |
|
|
|
myMap.geoObjects.add(myPlacemark); |
|
}); |
|
} |
|
|
|
initYandexMap(); |
|
@endif |
|
|
|
@if($type === 'baidu') |
|
function initBaiduMap() { |
|
var map = new BMap.Map(mapId); |
|
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" : "{{ $searchId }}" |
|
,"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(); |
|
@endif |
|
@if($type === 'amap') |
|
function initAmap(){ |
|
var map = new AMap.Map(container[0], { |
|
resizeEnable: true, |
|
center: lng.val() && lat.val() ? [lng.val(), lat.val()] : null, |
|
zoom: 14 |
|
}); |
|
var marker = new AMap.Marker({ |
|
position: new AMap.LngLat(lng.val(), lat.val()), |
|
draggable: true, |
|
map:map, |
|
icon:'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png', |
|
zoom:15 |
|
}); |
|
if (!lng.val() || !lat.val()){ |
|
var geolocation = new AMap.Geolocation({ |
|
enableHighAccuracy: true, |
|
zoomToAccuracy: true, |
|
buttonPosition: 'RB' |
|
}) |
|
geolocation.getCurrentPosition(function (status,result){ |
|
if (status === 'complete'){ |
|
var point = new AMap.LngLat(result.position.lng, result.position.lat); |
|
map.setCenter(point); |
|
map.setZoom(15); |
|
marker.setPosition(point) |
|
lat.val(result.position.lat); |
|
lng.val(result.position.lng); |
|
} |
|
}) |
|
} |
|
//输入提示 |
|
var auto = new AMap.Autocomplete({ |
|
input: "{{$searchId}}" |
|
}); |
|
var placeSearch = new AMap.PlaceSearch({ |
|
map: map |
|
}); |
|
AMap.event.addListener(auto, "select", function (e){ |
|
placeSearch.setCity(e.poi.adcode); |
|
placeSearch.search(e.poi.name); |
|
}); |
|
AMap.event.addListener(placeSearch, "markerClick", function (e){ |
|
let point = new AMap.LngLat(e.data.location.lng, e.data.location.lat); |
|
marker.setPosition(point) |
|
lat.val(e.data.location.lat); |
|
lng.val(e.data.location.lng); |
|
}); |
|
marker.on('dragend',function (e){ |
|
lat.val(e.lnglat.lat); |
|
lng.val(e.lnglat.lng); |
|
}); |
|
map.on('click',function (e){ |
|
if (e.type === 'click'){ |
|
let point = new AMap.LngLat(e.lnglat.lng, e.lnglat.lat); |
|
marker.setPosition(point) |
|
lat.val(e.lnglat.lat); |
|
lng.val(e.lnglat.lng); |
|
} |
|
}) |
|
} |
|
initAmap(); |
|
@endif |
|
</script>
|
|
|