国外卫星地图mapbox的基本操作

最近项目需求要做在线卫星地图,由于腾讯,高德卫星地图经度不够,谷歌地图正常无法访问,所以选择了mapbox这个商业性地图

1.注册所需token
首先进入网站mapbox控制台,如下图创建一个新的token,理论上有五万次的免费访问次数
在这里插入图片描述
2.实际开发
(1)首先引入以下静态资源(包括地图渲染使用的js,css;更换为中文所需的js插件;在地图上绘制图层所需的js,css文件)

<!--引入mapbox-->>
    <script src='https://api.mapbox.com/mapbox-gl-js/v2.1.1/mapbox-gl.js'></script>
    <link href='https://api.mapbox.com/mapbox-gl-js/v2.1.1/mapbox-gl.css' rel='stylesheet' />
    <!-- 引入语言插件 -->
    <script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-language/v0.10.0/mapbox-gl-language.js'></script>

    <!-- 引入绘图插件 -->
    <script src='https://api.tiles.mapbox.com/mapbox.js/plugins/turf/v3.0.11/turf.min.js'></script>
    <script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.0.9/mapbox-gl-draw.js'></script>
    <link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.0.9/mapbox-gl-draw.css' type='text/css' />

(2)首先定义一个容器,id为map

<div id='map' style='width:100%; height:100%;'></div>

接下在script里面初始化地图

 mapboxgl.accessToken = '用自己申请到的token';
 var map = new mapboxgl.Map({
           container: 'map',//容器id
           style: 'mapbox://styles/mapbox/satellite-streets-v9',//使用地图类型(此为卫星图)
           center: [80.99817807141773, 43.976098445868644],//中心点
           zoom: 12//缩放级别
 });

(3)设置语言,因为mapbox默认是英语,所以我们得设置成中文才能正常使用,当然前提是需要引入上述里面的语言插件

map.addControl(new MapboxLanguage({
       defaultLanguage: 'zh'
}));

(4)使用mapbox的绘图操作

  var draw = new MapboxDraw({
                    displayControlsDefault: false,
                    controls: {
                        polygon: true,
                        trash: true
                    }
                });
                map.addControl(draw);
                map.on('draw.create', updateArea);
                map.on('draw.delete', updateArea);
                map.on('draw.update', updateArea);

                // //绘制多边形,显示面积
              function updateArea(e) {
                    var data = draw.getAll();
                    var answer = document.getElementById('map');
                    if (data.features.length > 0) {
                        var area = turf.area(data);
                        // restrict to area to 2 decimal points
                        var rounded_area = Math.round(area * 100) / 100;
                        answer.innerHTML = '<p><strong>' + rounded_area + '</strong></p><p>square meters</p>';
                    } else {
                        answer.innerHTML = '';
                        if (e.type !== 'draw.delete') alert("Use the draw tools to draw a polygon!");
                    }
                }

(5)结果展示,地图的精度要远高于国内目前的腾讯,高德(PS:如果大家不想使用mapbox这样的外国地图,推荐可以使用国产的天地图,精度也相当之高,由国家地理信息公共服务平台提供,缺点就是更新速度较慢)
在这里插入图片描述

### 使用Mapbox API集成和配置卫星地图 #### 初始化Mapbox并设置卫星地图风格 为了使用Mapbox的API来创建带有卫星视图的地图,需要先引入必要的JavaScript库,并设定访问令牌。这可以通过在脚本中加入以下代码实现: ```javascript mapboxgl.accessToken = '用自己申请到的token'; var map = new mapboxgl.Map({ container: 'map', // 容器ID style: 'mapbox://styles/mapbox/satellite-streets-v9', // 使用卫星街道样式[^1] center: [80.99817807141773, 43.976098445868644], // 中心坐标 zoom: 12 // 缩放级别 }); ``` 这里选择了`satellite-streets-v9`作为地图样式,它结合了高分辨率卫星影像与道路网络数据。 #### 自定义位置展示 如果希望显示特定地理位置,则可以根据需求调整经纬度参数。例如,在XML布局文件中指定更详细的属性以便于Android开发环境下的MapView组件初始化时自动定位至某地: ```xml <com.mapbox.mapboxsdk.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" mapbox:center_latitude="39.069" mapbox:center_longitude="117.221" mapbox:style_url="@string/style_satellite_streets" mapbox:zoom="15"/> ``` 上述代码片段展示了如何通过XML配置MapView以加载预设好的卫星街景模式,并聚焦在中国北京地区的一个具体地点上[^3]。 #### 添加交互功能 对于Web应用程序而言,还可以进一步增强用户体验,比如添加鼠标悬停效果、点击事件监听等功能。这些都可以借助React框架配合`react-mapbox-gl`插件轻松达成。首先需确保已正确安装相关依赖项: ```bash npm install mapbox-gl react-mapbox-gl ``` 接着,在入口JS文件里声明全局性的accessToken变量用于身份验证目的;之后便可在应用内部自由操作地图对象了[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值