码迷,mamicode.com
首页 > 其他好文 > 详细

Vue系列:如何将百度地图包装成Vue的组件

时间:2016-08-14 07:21:48      阅读:1408      评论:0      收藏:0      [点我收藏+]

标签:

主要分解为如下步骤:
(1)在html文件中引入百度地图,
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=your token "></script>

(2)在webpack.base.conf.js文件内添加external选项,在module.exports内部,和entry平级;
externals: {
   "BMap": "BMap"
 }, 

(3)添加地图组件BMapComponent.vue,这里主要注意两点:
    a)使用BMap的时候不需要import了,import反而会报错     
    b)注意一定要给bmap的div设置高度,否则会看不见
该组件的代码如下
  1. <template>
  2. <!-- <div id="allmap" style="width: 100%; height: {{mapHeight}}px"></div> -->
  3. <!-- <div id="allmap" :style="{width: ‘100%‘, height: mapHeight + ‘px‘}"></div> -->
  4. <div id="allmap" v-bind:style="mapStyle"></div>
  5. </template>
  6. <script>
  7. export default {
  8. data: function() {
  9. return {
  10. mapStyle: {
  11. width: ‘100%‘,
  12. height: this.mapHeight + ‘px‘
  13. }
  14. }
  15. },
  16. props:{
  17. // 地图在该视图上的高度
  18. mapHeight:{
  19. type: Number,
  20. default: 500
  21. },
  22. // 经度
  23. longitude: {
  24. type:Number,
  25. default: 116.404
  26. },
  27. // 纬度
  28. latitude: {
  29. type:Number,
  30. default:39.915
  31. },
  32. description:{
  33. type:String,
  34. default:‘天安门‘
  35. }
  36. },
  37. ready: function(){
  38. var map = new BMap.Map("allmap");
  39. var point = new BMap.Point(this.longitude, this.latitude);
  40. var marker = new BMap.Marker(point);
  41. map.addOverlay(marker);
  42. map.centerAndZoom(point, 15);
  43. // 信息窗的配置信息
  44. var opts = {
  45. width : 250,
  46. height: 75,
  47. title : "地址:" ,
  48. }
  49. var infoWindow = new BMap.InfoWindow(this.description, opts); // 创建信息窗口对象
  50. marker.addEventListener("click", function(){
  51. map.openInfoWindow(infoWindow,point);
  52. });
  53. map.enableScrollWheelZoom(true);
  54. map.openInfoWindow(infoWindow,point); //开启信息窗口
  55. }
  56. }
  57. </script>
  58. <!-- Add "scoped" attribute to limit CSS to this component only -->
  59. <style scoped>
  60. </style>

(4) 在父组件中使用
    a)引入 import BMapComponent from ‘./components/BMapComponent.vue‘
    b)在template中增加标签
     <b-map-component></b-map-component>
    注意这里标签的命名,在vue文档中有说:http://vuejs.org.cn/guide/components.html#资源命名约定 

技术分享
 




Vue系列:如何将百度地图包装成Vue的组件

标签:

原文地址:http://www.cnblogs.com/strinkbug/p/5769075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!