адрес гитхаба:GitHub.com/победные очки/…
Это обновление
- Экземпляр карты: отображение карты
предисловие
Из-за предыдущей работы часто используются различные карты, такие как Baidu Maps, AutoNavi Maps, Google Maps и т. д. Итак, я хочу разобраться и написать набор различных демонстраций, которые используют API карты в соответствии с различными потребностями, поэтому давайте возьмем карту Baidu в качестве примера.
В этой статье будет реализован метод использования в реакции один за другим в соответствии со списком демонстраций, отображаемым на официальном сайте. Содержание статьи длинное и будет постоянно обновляться, в то же время в столбцы, представленные на официальном сайте, будут добавляться различные комбинации использования в соответствии с фактическим использованием.
Технология
- React -----> create-react-appОснова для быстрого построения React, официально разработанная facebook.
- Карта БайдуJavaScript API-------> API карты Baidu, используемый на веб-странице
- antd design -----> Высококачественные компоненты React из коробки.
(1) Передняя конструкция
1. Используйте скаффолдинг create-react-app, официально разработанный facebook, чтобы создать интерфейсный фреймворк для реагирования.
(1) Глобально установить приложение create-реагировать
npm install -g create-react-app
(2) Создать проект
create-react-app react-map
npm run eject //可省略,只为了看配置 config
npm start
Из этого каталога проекта, как показано ниже
(3) Эксплуатация
npm start
(4) Зависимости установки
npm install antd react-router --save
Чтобы иметь возможность загрузки по запросу при использовании antd, сначала настройте babel-plugin-import Это плагин babel для загрузки кода компонентов и стилей по запросу.
npm install babel-plugin-import --save-dev
Затем добавьте конфигурацию в package.json.
·····省略其他
"babel": {
"presets": [
"react-app"
],
"plugins": [
[
"import",
{
"libraryName": "antd",
"style": true
}
]
]
},
·····省略其他
Используйте декоратор
npm install --saveDev babel-plugin-transform-decorators-legacy
然后在package.json中加入配置
·····省略其他
"babel": {
"presets": [
"react-app"
],
"plugins": [
"transform-decorators-legacy",
[
"import",
{
"libraryName": "antd",
"style": true
}
]
]
},
·····省略其他
Базовый макет страницы
После того, как основная работа сделана, давайте начнем официальное использование карты.
(1) Получите API карты Baidu. В Интернете есть много руководств, поэтому я не буду его представлять. Если вы не хотите его получать, вы можете сначала использовать мой ключ.2NZa1O1V3BHmsDlX9fdomGaO3S5b1AEo(2) Добавлено в public/index.html
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=2NZa1O1V3BHmsDlX9fdomGaO3S5b1AEo"></script>
(3) реакция использует BMap
фокус фокус! ! ! !Если вы используете его напрямую
let map =new BMap.Map("allmap");
сообщит об ошибке
Есть два решения может относиться кБлог Woohoo.cn на.com/soft idea/afraid/…Это зависит от вашего выбора.
В этой статье выбран второй в config/webpack.config.dev.js
module.exports = {
externals:{
'BMap':'BMap',
},
}
Затем в jsx, который вы хотите использовать, добавьте
import BMap from 'BMap';
успех! ! ! !
Карта отображается демо
В этой статье будет реализован метод использования в реакции один за другим в соответствии со списком демонстраций, отображаемым на официальном сайте. Содержание статьи длинное и будет постоянно обновляться, в то же время в столбцы, представленные на официальном сайте, будут добавляться различные комбинации использования в соответствии с фактическим использованием.
Часть 1 Сила карты
На официальном сайте сила карты следующая:
На данный момент структура моего проекта выглядит следующим образом:отображение карты
src/components/bmap/mapSample/BasicMapView.jsx
(1) Импорт BMap
import BMap from 'BMap';
(2) Отображение карты Теперь сделайте идентификатор карты, высоту, ширину и другую информацию в рендере.
<div style={{width:"100%",height:"100%"}} id={"allmap"}></div>
Затем привяжите id к карте в componentDidMount, скопируйте и вставьте пример официального сайта
componentDidMount(){
let map =new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
//添加地图类型控件
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_HYBRID_MAP,//混合地图
BMAP_NORMAL_MAP//地图
]}));
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
}
В этот момент я обнаружил, что emmmmm сообщил об ошибке
Bmap_normal_map, 'bmap_hybrid_map' не определенНо после печати Console.log (окно), которое на самом деле нашел окно, поэтому вы можете использовать специальные JS сохранить данные. Эти параметры указаны в общем / bmap_data.js вexport const BMAP_NORMAL_MAP =window.BMAP_NORMAL_MAP;
export const BMAP_HYBRID_MAP = window.BMAP_HYBRID_MAP;
Затем импортируйте в src/components/bmap/mapSample/BasicMapView.jsx.
import {BMAP_HYBRID_MAP, BMAP_NORMAL_MAP} from "../../../common/BMAP_DATA";
Возьми!