Я хотел бы реализовать карту Mapbox-gl-js в одном компоненте Quasar Framework (Vue), но я не получаю его работу. Я нашел код на Googlemaps с Vue и некоторые вещи на Mapbox с React, и попытайтесь вытащить его из этого. С параметрами инициализации ниже карты я могу получить карту, показывающую штраф в index.html (с плитами mapzen), но хочу его в компоненте.Mapbox-gl в одном файле Vue.js (Quasar-Framework)
Я стараюсь следовать этому [https://laracasts.com/discuss/channels/vue/google-maps-and-vue-js](link URL), а затем настроить его для MapBox: PROJ/SRC/компоненты/maplayout.vue:
<template>
<quasar-layout>
<h3>Map</h3>
<div id='map'></div>
</quasar-layout>
</template>
<script>
import mapboxgl from '../app'
export default {
data() {
return {}
},
create() {
this.createMap()
},
methods: {
createMap: function() {
mapboxgl.accessToken = '{{yourmapboxaccestokenkey}}'
var simple = {
'version': 8,
'sources': {
'osm': {
'type': 'vector',
'tiles': ['https://vector.mapzen.com/osm/all/{z}/{x}/{y}.mvt?api_key=vector-tiles-{{yourmapzenapikey}}']
}
},
'layers': [{
'id': 'background',
'type': 'background',
'paint': {
'background-color': '#adddd2'
}
}, {
'id': 'majorroad',
'source': 'osm',
'source-layer': 'roads',
'type': 'line'
}, {
'id': 'buildings',
'type': 'fill',
'source': 'osm',
'source-layer': 'buildings'
}]
}
// initialize the map
this.map = new mapboxgl.Map({
container: 'map',
style: simple,
center: [-1.83, -78.183],
zoom: 5.5
})
}
}
}
</script>
<style>
</style>
Кстати, для MapBox с WebPack вам нужно некоторые загрузчики, см .: [https://mikewilliamson.wordpress.com/2016/02/24/using-mapbox-gl-and-webpack-together/](link url) Но поскольку я получил Mapbox, работающий с Webpack раньше (без vue), я думаю, что у меня все в порядке. На самом деле я не получаю никаких ошибок в консоли браузера (но, очевидно, карта не отображается).
В app.js файл я не знаю, как справиться с предложенным (возможно, нет необходимости, поскольку GoogleMaps нужен обратный вызов, не знаю о MapBox/mapzen ?!):
var App = window.App = new Vue ({
//code
})
Как при инициализации Quasar делается так:
Quasar.start(() => {
Router.start(Vue.extend({}), '#quasar-app')
})
Что я на самом деле не получить ...
Любые предложения, как получить эту работу приветствуются!
Приятно ответить основателю Quasar Framework! Я следую вашему предложению и получаю 'Uncaught TypeError: Не могу установить свойство accessToken 'undefined'. Очевидно, что 'mapboxgl' не определено. Я импортирую библиотеку mapbox-gl в app.js, а затем «экспортирую default mapboxgl» и импортирую ее в maplayout.vue. – musicformellons
Проверьте, не указан ли mapboxgl в app.js. Вы делаете манипуляции на mapboxgl в app.js? Если нет, импортируйте его непосредственно в свой макет вместо проксирования через app.js. У вас есть репо, на которое я могу взглянуть? –
После получения права на импорт объекта mapboxgl я получаю: «Неиспользуемая ошибка: webworkify-webpack: не удалось найти модуль, содержащий функцию рабочего! Убедитесь, что вы не используете eval sourcemaps и передаете именованные функции в webworkify-webpack! Проблема находится в следующем репо: https://github.com/musicformellons/mapcomponent – musicformellons