初探mapbox地图可视化实例,带你看看家附近有多少咖啡馆

在这里插入图片描述
本实例使用的是Mapbox GL JS,开发文档地址:请点击

Mapbox GL JS 是一个用于 Web 上矢量地图的 JavaScript 库。它的性能、实时样式和交互功能为在网络上构建快速、沉浸式地图的任何人设定了标准。

官网给大家准备了很多实例,可供参考学习。
在这里插入图片描述

咖啡馆地图可视化

实现效果在这里插入图片描述

核心代码 (React + Typescript)

import React, {
    useEffect, useState } from "react";
import {
    history } from "umi";
import mapboxgl from "mapbox-gl";
import MapboxLanguage from "@mapbox/mapbox-gl-language";
import AllAddr from "@/utils/allAddr";
import Style from "./index.less";
import icon from "../../../public/images/coffee.png";

export default () => {
   
  const handleInitial = () => {
   
    mapboxgl.accessToken = "官方注册后提供的token";
    var map = new mapboxgl.Map({
   
      style: "mapbox://styles/stevage/ciz68fsec00112rpal5hjru07?refresh=1",
      center: [121.42, 31.22], //上海市长宁区
      zoom: 11.5, //缩放级别
      minZoom: 9,
      maxZoom: 19,
      container: "map",
    });
    //设置语言:中文
    var language = new MapboxLanguage({
    defaultLanguage: "zh-Hans" });
    map.addControl(language);

    map.on("load", function () {
   
      map.addSource("places", {
   
        type: "geojson",
        data: {
   
          type: "FeatureCollection",
          features: AllAddr.coffeAddr,
        },
      });
      map.addLayer({
   
        id: "places",
        type: "symbol",
        source: "places",
        layout: {
   
          "icon-image": "{icon}",
          "text-field": "{title}",
          "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
          "text-size": 20,
          "text-offset": [0, 0.6],
          "text-anchor": "top",
        },
        paint: {
   
          'text-color': '#50B4DB', 

        },
      });

      const popup = new mapboxgl.Popup({
   
        closeButton: false,
        closeOnClick: false,
      });

      map.on("mouseenter", "places", (e: any) => {
   
        map.getCanvas().style.cursor = "pointer";
        const coordinates = e.features[0].geometry.coordinates.slice();
        const description = e.features[0].properties.description;
        while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
   
          coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
        }
        popup.setLngLat(coordinates).setHTML(description).addTo(map);
      });

      map.on("mouseleave", "places", () => {
   
        map.getCanvas().style.cursor = "";
        popup.remove();
      });
    });
  };
  useEffect(() => {
   
    handleInitial();
  }, []);

  return (
    <div className={
   Style.mapContanier}>
      <div className={
   Style.leftItem}>
        <div className={
   Style.leftBg}>{
   AllAddr.bgText}</div>
        <h1>长宁区咖啡馆</h1>
      </div>
      <div id="map" className={
   Style.mapItem} />
    </div>
  );
};

相关配置

1、地图底图样式

mapbox://styles/mapbox/streets-v10
mapbox://styles/mapbox/outdoors-v10
mapbox://styles/mapbox/light-v9
mapbox://styles/mapbox/dark-v9
mapbox://styles/mapbox/satellite-v9
mapbox://styles/mapbox/satellite-streets-v10
mapbox://styles/mapbox/navigation-preview-day-v2
mapbox://styles/mapbox/navigation-preview-night-v2
mapbox://styles/mapbox/navigation-guidance-day-v2
mapbox://styles/mapbox/navigation-guidance-night-v2

var map = new mapboxgl.Map({
   
      style: "mapbox://styles/mapbox/streets-v10",
    });
2、常用配置项

circle

"layers": [
    {
   
        "id": "circle-id", // 唯一 id (必填)
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰卤工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值