您的位置: 首页 >日志>动易系统>详细内容

动易系统

WebFuture系统的“地理位置”扩展字段如何在前台展示

来源:本站原创 发布时间:2025-07-02 09:44:27 浏览次数: 【字体:

WebFuture系统的“地理位置”扩展字段如何在前台展示

当有项目需要展示地图定位时,可以用到这个类型的扩展字段,该类型字段记录的是经度和纬度,以字符串形式存储。

那么想要在前台展示地图,并且定位在设置的经纬度,我们可以用到百度地图。

一、建立扩展字段

202506031038158961


二、申请百度地图开放平台访问应用AK

202506031041226083


三、生成地图初始化代码

可以直接使用地图生成器,把访问应用AK放置上去:https://api.map.baidu.com/lbsapi/createmap/index.html

202506031044011955


四、提取字段的经度和纬度

@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>
}

这里定义了一个默认的经纬度,防止空值出现错误。

标题作为定位名称,副标题作为定位简介。

202506031108195933



×

用户登录