Sections
MetaMap
05 Apr 2023
HTML
JS
<section>
<div class="cont">
<div id="map"></div>
</div>
</section>
const countryList = ["ES", "FR", "US", "GB"];
const config = {
mapPath: "js/data/map.geo.json",
width: "1484",
height: "811",
markers: [
{
long: 6.184417,
lat: 48.692055,
},
{
long: -0.460739,
lat: 52.136436,
},
],
markerStyle: {
img: "images/pin.svg",
width: 28,
height: 32,
},
highlightCountries: countryList,
accentFillColor: "#266DA3",
countryFillColor: "#CBE6F1",
countryStrokeWidth: "1.5px",
};
const map = new MetaMap("#map", config);
Getting Started
1. Завантижити архів з потрібними бібліотеками.
2. Розпакувати його у ваш проєкт і імпортувати D3.js і Topojson (використовується для роботи з топографічними даними), перед закриттям тегу body, вище головного файлу main.js
<!-- D3.js -->
<script src="./js/plugins/d3.min.js"></script>
<!--Topojson for D3.js -->
<script src="./js/plugins/topojson.min.js"></script>
3. В файлі HTML створити базову структуру карти
<!-- Обгортка для мапи -->
<div id="map"></div>
4. Імпортувати MetaMap в main.js
import MetaMap from "./plugins/metaMap.v2.js";
5. Створити екземпляр мапи і передати конфіг для неї
const countryList = ["ES", "FR", "US", "GB"]; // список країн які треба підсвітити
// конфіг бібліотеки
const config = {
mapPath: "js/data/map.geo.json", // Абсолютний шлях до топографічних даних мапи
width: "1484",
height: "811",
markers: [ // Список маркерів
{
long: 6.184417,
lat: 48.692055,
},
{
long: -0.460739,
lat: 52.136436,
},
],
markerStyle: {
img: "images/pin.svg",
width: 28,
height: 32,
},
highlightCountries: countryList,
accentFillColor: "#266DA3",
countryFillColor: "#CBE6F1",
countryStrokeWidth: "1.5px",
};
const map = new MetaMap("#map", config);
6. Якщо ви все правильно зробили мапа має працювати
API
Parameters
selector | string | *require | Селектор елемента HTML контейнера мапи |
config | object | Об'єкт налаштувань для мапи |
Config
mapPath | string | *require | Абсолютний шлях до топографічних даних мапи |
zoom | boolean | true | Встановіть false для відключення зуму |
countryStrokeWidth | string | "0.25px" | Ширина кордону країни |
countryFillColor | string | "#cccccc" | Колір країни |
countryStrokeColor | string | "#ffffff" | Колір кордону країни |
accentFillColor | string | "red" | Колір вибраних країн |
accentStrokeColor | string | "#ffffff" | Колір кордону вибраних країн |
width | number | string | 900 | Ширина мапи |
height | number | string | 600 | Висота мапи |
markers | array: object | [] | Масив маркерів |
markerStyle | object | { color: "blue", img: null, width: 20, height: 20 } | Стиль маркерів |
highlightCountries | array: string | [] | Масив вибраних країн |
on | object | null | Об'єкт слухачів подій |
Methods
map.selectCountry(id) | Виділяє країну на мапі |
map.selectCountryList(idList) | Виділяє масив країну на мапі |
Listeners
Події можна призначати в параметрі on при ініціалізації мапи.
// ... config
on: {
markerClick(path, data){
console.log("Marker was clicked!");
}
}
// ... config
markerClick | path, data | Слухач який зпрацювує при кліку на маркер |
Countries ID
Розміщаємо маркери на мапі
Для того щоб розмістити маркери на мапі треба в конфіг мапи передати масив об'єктів з широтою і довготою.
// ... config
markers: [
{
long: 6.184417,
lat: 48.692055,
},
{
long: -0.460739,
lat: 52.136436,
},
],
// ... config
Також можна передати додаткові дані в об'єкт маркеру, які будуть доступні, наприклад, при кліку на маркер.
// ... config
markers: [
{
long: 6.184417,
lat: 48.692055,
data: {text: "Some Text!"},
},
{
long: -0.460739,
lat: 52.136436,
data: {text: "Some Text 2!"},
},
],
// ... config