WebFuture系统的“地理位置”扩展字段如何在前台展示
WebFuture系统的“地理位置”扩展字段如何在前台展示
当有项目需要展示地图定位时,可以用到这个类型的扩展字段,该类型字段记录的是经度和纬度,以字符串形式存储。
那么想要在前台展示地图,并且定位在设置的经纬度,我们可以用到百度地图。
一、建立扩展字段
二、申请百度地图开放平台访问应用AK
三、生成地图初始化代码
可以直接使用地图生成器,把访问应用AK放置上去:https://api.map.baidu.com/lbsapi/createmap/index.html
四、提取字段的经度和纬度
@if (!string.IsNullOrEmpty(Model.ExtendObject.dlwz)) { string dlwz = Model.ExtendObject.dlwz.Trim('P', 'O', 'I', 'N', 'T', '(', ')'); string[] dlwzs = dlwz.Split(' '); <span>经度: @dlwzs[0]</span> <span>纬度: @dlwzs[1]</span> }
五、制作模板-最终效果
@*内容页模板*@ @Power.VisualizationView(new { Area = "ContentManage", Controller = "Article" }) @model Article @{ Layout = $"~/Views/{this.Context.GetCurrentSite().Identifier}/Layout/公共布局页.cshtml"; } @{ string[] maps = new string[] { "113.280338", "23.137723" }; if (!string.IsNullOrEmpty(Model.ExtendObject.Map)) { string map = Model.ExtendObject.Map.Trim('P', 'O', 'I', 'N', 'T', '(', ')'); maps = map.Split(' '); } } <!-- content S --> <div id="content"> <div class="map" id="map"></div> </div> <!-- content E --> @section scripts{ <script src="//api.map.baidu.com/api?v=2.0&ak=R21qBY07n3H5P2cwSZKfZAKdHAbiTpIq"></script> <script> //创建和初始化地图函数: function initMap(){ createMap();//创建地图 setMapEvent();//设置地图事件 addMapControl();//向地图添加控件 addMapOverlay();//向地图添加覆盖物 } function createMap(){ map = new BMap.Map("map"); map.centerAndZoom(new BMap.Point(@maps[0],@maps[1]),18); } function setMapEvent(){ map.enableScrollWheelZoom(); map.enableKeyboard(); map.enableDragging(); map.enableDoubleClickZoom() } function addClickHandler(target,window){ target.addEventListener("click",function(){ target.openInfoWindow(window); }); } function addMapOverlay(){ var markers = [ {content:"@Model.Subheading",title:"@Model.Title",imageOffset: {width:-46,height:-21},position:{lat:@maps[1],lng:@maps[0]}} ]; for(var index = 0; index < markers.length; index++ ){ var point = new BMap.Point(markers[index].position.lng,markers[index].position.lat); var marker = new BMap.Marker(point,{icon:new BMap.Icon("//api.map.baidu.com/lbsapi/createmap/images/icon.png",new BMap.Size(20,25),{ imageOffset: new BMap.Size(markers[index].imageOffset.width,markers[index].imageOffset.height) })}); var label = new BMap.Label(markers[index].title,{offset: new BMap.Size(25,5)}); var opts = { width: 200, title: markers[index].title, enableMessage: false }; var infoWindow = new BMap.InfoWindow(markers[index].content,opts); marker.setLabel(label); addClickHandler(marker,infoWindow); map.addOverlay(marker); }; } //向地图添加控件 function addMapControl(){ var navControl = new BMap.NavigationControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,type:3}); map.addControl(navControl); } var map; initMap(); </script> }
这里定义了一个默认的经纬度,防止空值出现错误。
标题作为定位名称,副标题作为定位简介。
用户登录
还没有账号?
立即注册