vue引入maptalks地圖及聚合效果
1、安裝maptalks.js
npm install maptalks --save
2、安裝聚合mapkercluster
npm install maptalks.markercluster
3、vue頁面引入
import * as maptalks from 'maptalks'
import {ClusterLayer} from 'maptalks.markercluster'
4、初始化地圖並新增聚合
mounted() { let that = this //--0--//地圖物件的初始化 this.map = new maptalks.Map('map', { center: [109.1748453547,21.4586700546], //中心點標記紅十字,用於開發debug centerCross : false, zoom: 13, minZoom : 10, maxZoom : 18, //縮放級別控制元件 zoomControl : false, // add zoom control scaleControl : true, // add scale control //鷹眼控制元件 overviewControl : true, // add overview control //設定瓦片圖層的空間參考spatialReference預設就是3857,googlemap的解析度 spatialReference : { projection : 'EPSG:3857' //與map一樣,支援更詳細的設定resolutions,fullExtent等 }, baseLayer: new maptalks.TileLayer('base', { // urlTemplate: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', //renderer : 'canvas', // set TileLayer's renderer to canvas //底圖伺服器地址,如下為瓦片地址 urlTemplate: 'http://xxx.xx.xxx.xxx:xxxx/mapdata/tiles/{z}/{x}/{y}.png', //tileSystem 控制瓦片的x,y以及行列,後兩個是origin原點位置(很重要) tileSystem : [1, 1, -20037508.3427890,-20037508.3427890], // tile system //subdomains: ['a','b','c'], minZoom : 10, maxZoom : 18 // css filter 濾鏡配置 // cssFilter : 'sepia(60%) invert(95%)', // attribution: '© <a href="http://maptalks.org/" target="_blank">Maptalk for Amap</a> contributors' }), layers : [ new maptalks.VectorLayer('v') ], attribution: {//左下角info content: '©qmap' } }) // 拖動範圍限制,黑框控 let extent = new maptalks.Extent(108.8584570000,20.9790840000,110.0569128018,22.1177123207) // var extent = new maptalks.Extent(112.5381688894,26.8876543885,112.5605009244,26.9012691519); // set map's max extent to map's extent at zoom 14 this.map.setMaxExtent(extent) this.map.setZoom(this.map.getZoom(), { animation : false }) this.map.getLayer('v') .addGeometry( new maptalks.Polygon(extent.toArray(), { symbol : { 'polygonOpacity': 0, 'lineWidth': 0 } }) ) // 往地圖上新增點位 this.markInfo() }, methods: { setCenter: function(center) { //標註點平移到某個點 let centerV = maptalks1.CRSTransform.transform(center, 'bd09ll', 'gcj02') this.map.animateTo({ zoom: 17, center: centerV }, { duration: 1000 }) }, // 上圖 markInfo: function () { let that = this that.map.removeLayer(that.clusterLayer) let markers = [] //--2--//前端聚合查詢 // data from realworld.50000.1.js //需要引入maptalks.markercluster.js //資料格式[lon,lat,name] // 如:[[21.8129763667, 109.2714296333, "曉港名城4號樓"],[21.8131727667, 109.2710308833, "曉港名城6號樓"]] for (let i = 0; i < that.addressPoints.length; i++) { let a = that.addressPoints[i] markers.push(new maptalks.Marker(maptalks1.CRSTransform.transform([a.latitude, a.longitude], 'bd09ll', 'gcj02'), { 'properties': { 'name': a.name, 'onSale': a.onSale }, symbol : [ { 'markerFile' : a.onSale ? require('../../../static/img/on.png') : require('../../../static/img/off.png'),//標註點圖示 'markerWidth' : 30, 'markerHeight' : 35 },{ 'textName' : '{name}', 'textSize' : 12, 'textDy' : -50, 'textHaloRadius' : 5, 'textHaloFill' : a.onSale ? '#FFB427' : '#B9B9B9', 'textFill' : '#fff' // color } ] } ))//.on('mousedown', onClick)) } let clusterLayer = new ClusterLayer('cluster', markers, { 'noClusterWithOneMarker' : true, 'noClusterWithHowMany': 8,//聚合的最小個數 'maxClusterZoom' : 15, //"count" is an internal variable: marker count in the cluster. 'symbol': { 'markerType' : 'ellipse', 'markerFill' : { property:'count', type:'interval', stops: [[0, 'rgb(135, 196, 240)'], [9, '#1bbc9b'],[50, 'rgb(116, 115, 149)'], [99, 'rgb(216, 115, 149)']]}, 'markerFillOpacity' : 0.7, 'markerLineOpacity' : 1, 'markerLineWidth' : 3, 'markerLineColor' : '#fff', 'markerWidth' : { property:'count', type:'interval', stops: [[0, 40], [9, 60], [50, 70],[99, 80]] }, 'markerHeight' : { property:'count', type:'interval', stops: [[0, 40], [9, 60], [50, 70],[99, 80]] } }, 'drawClusterText': true, 'geometryEvents' : true, 'single': true }) that.map.addLayer(clusterLayer) that.clusterLayer = clusterLayer function onClick(e) { e.target.setInfoWindow({ 'content': '<div class="content-' + e.target.properties.onSale + '">' + e.target.properties.name + '</div>', 'width' : 150, 'dy' : 5, 'autoPan': true, 'custom': false, 'autoOpenOn' : 'click', //set to null if not to open when clicking on marker 'autoCloseOn' : 'click' }) } } }
相關推薦
vue引入maptalks地圖及聚合效果
1、安裝maptalks.js npm install maptalks --save 2、安裝聚合mapkercluster npm install maptalks.markercluster 3、vue頁面引入 import * as maptalks f
vue引入天地圖
最終效果圖: 1、新建一個初始化js(init.js) 在index.html引入js <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=您的tk" type="text/javascript"></scrip
vue引入animate.css及樣式大全
一、首先我們要在小黑窗中下載: npm install animate.css --save 二、在main.js中引入: import animated from ‘animate.css’ Vue.use(animated) 三、開始寫我們的t
ionic 修改應用名稱 及 修改百度離線地圖 點聚合 圖標
離線 百度離線地圖 分享 應用名稱 技術分享 修改 com http ges 1.ionic 修改應用名稱 2.修改百度離線地圖 點聚合 圖標 ionic 修改應用名稱 及 修改百度離線地圖 點聚合 圖標
新建VUE 2.0 專案及引入Element UI 步驟及常見問題
新建Vue專案: 淘寶映象(npm install -g cnpm –registry=https://registry.npm.taobao.org) webpack(cnpm install webpack -g 或 npm install webpack -g) Vue
解決Vue引入百度地圖JSSDK:BMap is undefined 問題
原文連結: 解決Vue引入百度地圖JSSDK:BMap is undefined 問題 百度地圖官網文件介紹使用JSSDK時,僅提供了2種引入方式: script引入 非同步載入 但vue專案中僅某一兩個頁面需要用到百度地圖,所以不想在 index.html 中全域性引用。 那
vue之動畫及過渡效果
1、自定義css樣式實現 css(注:若未定義transition的name,預設未v-) <style> .v-enter, .v-leave-to{ <#--過渡效果 透明度--> opacity:0; } .v-e
vue專案中實現maptalks地圖上彈框使用videojs播放實時視訊rtmp流
不限制於vue專案,區別只是相關檔案的引入 最終實現效果如下: 1、首先引入需要的資源:vue-video-player、maptalks相關 npm install vue-video-player --save npm install maptalks -
[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題
定義 gps 官方 應用程序 2.x lns settings sap xmlns 近期做android百度地圖,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so顯示百度地圖時總是遇到問題——僅僅顯示
Vue 參數傳遞及刷新後依舊存在
sent 多個 com col tar path .... ram ref 獲取參數方式有兩種: 1、params2、query第一種方式: params this.$router.push({name:‘Hello‘,params:{name:‘zs‘,age:‘22‘}
vue引入jq插件
http pro logs color brush 網上 {} 嘗試 vid 今天做官網,把unslider做成指令,但是一直提示$(el).unslider() no a function,一開始我想復雜了,後來在網上看了很多帖子,大多數都是修改webpack.base.
百度地圖 彈窗效果,標註總顯示在左上角
scroll coder 自動 poi level edr local board 放大縮小 現象一: 地圖彈窗先隱藏 ->顯示地圖彈窗->設置marker -> 設置centerAndZoom 看效果標註層定點位置有問題(因顯隱),中心點還是相對
Vue生命周期及業務場景使用
create ext ans 圖片 gem tro observe 相關 重新 vue裏的生命周期是什麽? vue實例從創建到銷毀的過程稱之為vue的生命周期 vue的生命周期各階段都做了什麽? beforeCreate 實例創建前:這個階段實例的data、methods
Arcgis api for javascript學習筆記-三維地圖的飛行效果
com init viewport window eight put div speed null 其實就只是用到了 view.goTo() 函數,再利用 window.setInterval() 函數(定時器)定時執行goTo()。代碼如下: <!DOCTYP
聊一聊2D地圖的迷霧效果
png char 一段 行數據 編程經驗 lan get 第一個 色值 在經歷了17年諸般變動後,現在到了2018年。懷舊是因為之前幾年發生太多,好與不好都已過去,17年迎來新的開始,所以也就有了後來些許感慨,有機會再說說這些行業感受了。今天先讓我們專註於川最新解決的實際項
vue的登陸驗證及返回登錄前頁面實現
ble AI ldr false 有一個 url 兩個 並不是 || 一、路由配置部分如下所示, 導出路由示例 let router = new VueRouter({ routes: [ // 登陸 { name: ‘login‘, path: ‘/
Vue項目搭建及原理一
router 提高 nbsp .com 早已 實現 vuejs 前端框架 包括 一. Vue簡介 Vue簡介 Vue是近兩年來比較火的一個前端框架(漸進式框架),與reactjs和angularjs三國鼎立,根據不完全統計,包括餓了麽、稀土掘金、蘇寧易購、美團
vue引入jquery
plugin src ide ack pro nbsp ins -s ima 在vue中我們如何引入jquery 1.在package.json裏面的dependencies 加入“jquery”:“^3.2.1”, 圖示 2. 終端輸入 npm install j
Tutorial中代碼的區別及不同效果
bsp 請求 吞吐量 req async 情況下 情況 gpo t對象 首先, Servlet 處理流程為如下過程:首先,Servlet 接收到請求之後,可能首先需要對請求攜帶的數據進行一些預處理;接著,Servlet 線程將請求轉交給一個異步線程來執行業務處理,線程本身返
vue 引入通用 css
組件 oba outer style 路由配置 smart rom eight css 1、在入口 js 文件 main.js 中引入,一些公共的樣式文件,可以在這裏引入。import Vue from ‘vue‘ import App from ‘./App‘ // 引入