qqMap.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <!-- <div>
  3. <a-input-search
  4. placeholder="请输入搜索的地址"
  5. @search="onSearch"
  6. enterButton="Search"
  7. style="width: 300px;margin-left: 20px;"
  8. />
  9. </div> -->
  10. <div id="mapBox" ref="mapBox" style="width: 100%; height: 100%;"></div>
  11. </template>
  12. <script>
  13. export default {
  14. name: 'TencentMap',
  15. data() {
  16. return {
  17. map: null,
  18. markerLayer: null,
  19. geocoder: null
  20. }
  21. },
  22. mounted() {
  23. // 初始化地图
  24. this.initMap({});
  25. },
  26. methods: {
  27. initMap(params) {
  28. //定义地图中心点坐标
  29. // 经纬度解析类回调函数
  30. console.log("params===",params)
  31. let lat = params.lat||39.916527
  32. let lng = params.lng||116.397128
  33. console.log("params===",params,lat,lng)
  34. let center = new TMap.LatLng(params.lat||39.916527, params.lng||116.397128)
  35. //定义map变量,调用 TMap.Map() 构造函数创建地图
  36. this.map = new TMap.Map(this.$refs.mapBox, {
  37. center: center,//设置地图中心点坐标
  38. zoom: 17.2, //设置地图缩放级别
  39. pitch: 43.5, //设置俯仰角
  40. rotation: 45 //设置地图旋转角度
  41. });
  42. this.geocoder = new TMap.service.Geocoder()
  43. if(params.lat&&params.lng) {
  44. this.setMakerLayer(params,false)
  45. }
  46. //监听点击事件添加marker
  47. this.map.on("click", (evt) => {
  48. this.setMakerLayer(evt.latLng)
  49. this.$emit('setDot',{
  50. ...evt.latLng
  51. })
  52. this.geocoder.getAddress({ location: evt.latLng }).then((result) => {
  53. console.log("result===",result.result.address)
  54. this.$emit('setDot',{
  55. ...evt.latLng,
  56. address: result.result.address
  57. })
  58. //result.result.address即为解析出来的地址
  59. });
  60. });
  61. },
  62. setMakerLayer(params,type){
  63. console.log("params111===",params)
  64. let lat = params.lat||39.916527
  65. let lng = params.lng||116.397128
  66. console.log("params111===",params,lat,lng)
  67. if(type) {
  68. let center = new TMap.LatLng(params.lat||39.916527, params.lng||116.397128)
  69. this.map.setCenter(center);
  70. }
  71. if(this.markerLayer){
  72. this.markerLayer.setMap(null)
  73. }
  74. if(params.lat){
  75. this.markerLayer = new TMap.MultiMarker({
  76. id: 'marker-layer',
  77. map: this.map
  78. })
  79. this.markerLayer.add({
  80. position: new TMap.LatLng(params.lat,params.lng)
  81. });
  82. }
  83. }
  84. }
  85. }
  86. </script>