map.uvue 18.1 KB
Newer Older
Anne_LXM's avatar
Anne_LXM 已提交
1
<template>
2
  <view class="content">
3 4 5
    <map class="map" id="map1" ref="map1" :longitude="location.longitude" :latitude="location.latitude" :scale="scale"
      :markers="markers" :include-points="includePoints" :polyline="polyline" :polygons="polygons" :circles="circles"
      :controls="controls" :show-location="showLocation" :enable-3D="enable3D" :rotate="rotate" :skew="skew"
6 7
      :show-compass="showCompass" :enable-overlooking="enableOverlooking" :enable-zoom="enableZoom"
      :enable-scroll="enableScroll" :enable-rotate="enableRotate" :enable-satellite="enableSatellite"
8 9
      :enable-traffic="enableTraffic" @markertap="onmarkertap" @callouttap="oncallouttap" @controltap="oncontroltap"
      @regionchange="onregionchange" @tap="maptap" @updated="onupdated" @poitap="onpoitap"></map>
10
    <scroll-view class="scrollview" scroll-y="true">
11
      <view class="tips">注意:需要正确配置地图服务商的Key才能正常显示地图组件</view>
Anne_LXM's avatar
Anne_LXM 已提交
12 13 14
      <view class="uni-title">
        <text class="uni-title-text">属性示例</text>
      </View>
15 16
      <input-data defaultValue="13" title="scale: 缩放级别,取值范围为5-18" type="number"
        @confirm="confirm_scale_input"></input-data>
Anne_LXM's avatar
Anne_LXM 已提交
17
      <boolean-data :defaultValue="showLocation" title="开启显示带有方向的当前定位点" @change="change_show_location"></boolean-data>
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
18 19 20 21 22 23 24 25
      <boolean-data :default-value="enable3D" title="3D效果" @change="change_enable_3d"></boolean-data>
      <boolean-data :default-value="showCompass" title="显示指南针" @change="change_show_campass"></boolean-data>
      <boolean-data :default-value="enableOverlooking" title="俯视支持" @change="change_enable_overlooking"></boolean-data>
      <boolean-data :default-value="enableRotate" title="旋转支持" @change="change_enable_rotate"></boolean-data>
      <boolean-data :default-value="enableZoom" title="缩放支持" @change="change_enable_zoom"></boolean-data>
      <boolean-data :default-value="enableScroll" title="拖动支持" @change="change_enable_scroll"></boolean-data>
      <boolean-data :default-value="enableSatellite" title="卫星图" @change="change_enable_satellite"></boolean-data>
      <boolean-data :default-value="enableTraffic" title="实时路况" @change="change_enable_traffic"></boolean-data>
Anne_LXM's avatar
Anne_LXM 已提交
26

Anne_LXM's avatar
Anne_LXM 已提交
27
      <button class="button" @click="addControls">控件</button>
Anne_LXM's avatar
Anne_LXM 已提交
28
      <button class="button" @click="addMarkers">添加标记点</button>
29
      <!-- #ifdef WEB -->
Anne_LXM's avatar
Anne_LXM 已提交
30
      <button class="button" @click="addMarkersLabel">为标记点旁边增加标签</button>
DCloud-WZF's avatar
DCloud-WZF 已提交
31 32
      <!-- #endif -->
      <button class="button" @click="removeMarker">移除ID为4的标记点和标签</button>
Anne_LXM's avatar
Anne_LXM 已提交
33 34 35 36 37 38
      <button class="button" @click="addPolyline">添加路线</button>
      <button class="button" @click="removePolyline">移除一条路线</button>
      <button class="button" @click="addPolygons">添加多边形</button>
      <button class="button" @click="removePolygon">移除一个多边形</button>
      <button class="button" @click="addCircles">添加圆</button>
      <button class="button" @click="removeCircle">移除一个圆</button>
Anne_LXM's avatar
Anne_LXM 已提交
39 40 41 42 43 44
      <button class="button" @click="includePoint">缩放视野以包含所有给定的坐标点</button>
      <view class="uni-title">
        <text class="uni-title-text">方法示例</text>
      </View>
      <button class="button" @click="handleGetCenterLocation">获取当前地图中心的经纬度</button>
      <button class="button" @click="handleGetRegion">获取当前地图的视野范围</button>
Anne_LXM's avatar
Anne_LXM 已提交
45
      <button class="button" @click="handleTranslateMarker">平移marker</button>
DCloud-WZF's avatar
DCloud-WZF 已提交
46
      <button class="button" @click="handleMoveToLocation">将地图中心移动到指定坐标</button>
Anne_LXM's avatar
Anne_LXM 已提交
47 48
      <button class="button" @click="handleGetScale">获取当前地图的缩放级别</button>

49 50
    </scroll-view>
  </view>
Anne_LXM's avatar
Anne_LXM 已提交
51
</template>
52

Anne_LXM's avatar
Anne_LXM 已提交
53
<script setup lang="uts">
Anne_LXM's avatar
Anne_LXM 已提交
54
  type TypeJestResult = {
Anne_LXM's avatar
Anne_LXM 已提交
55 56
    translateMarkerMsg : string,
    animationEnd : boolean,
DCloud-WZF's avatar
DCloud-WZF 已提交
57 58 59
    centerPoints : LocationObject,
    southwest : LocationObject,
    northeast : LocationObject,
Anne_LXM's avatar
Anne_LXM 已提交
60 61
    moveToLocationMsg : string,
    scale : number
Anne_LXM's avatar
Anne_LXM 已提交
62 63
  }

DCloud-WZF's avatar
DCloud-WZF 已提交
64
  const testMarkers :Marker[]= [{
65 66 67 68 69 70 71 72 73 74 75
    id: 0,
    latitude: 39.989631,
    longitude: 116.481018,
    title: '方恒国际 阜通东大街6号',
    iconPath: '../../../static/location.png',
    rotate: 0,
    width: 20,
    height: 20,
    anchor: {
      x: 0.5,
      y: 1
DCloud-WZF's avatar
DCloud-WZF 已提交
76
    } ,
77 78 79 80 81 82 83 84
    callout: {
      content: '方恒国际 阜通东大街6号',
      color: '#00BFFF',
      fontSize: 10,
      borderRadius: 4,
      borderWidth: 1,
      borderColor: '#333300',
      bgColor: '#CCFF99',
Anne_LXM's avatar
Anne_LXM 已提交
85
      padding: 5,
86
      display: 'ALWAYS'
DCloud-WZF's avatar
DCloud-WZF 已提交
87
    } as MapMarkerCallout
88 89 90 91 92 93
  },
  {
    id: 1,
    latitude: 39.9086920000,
    longitude: 116.3974770000,
    title: '天安门',
DCloud-WZF's avatar
DCloud-WZF 已提交
94
    // zIndex: '1',
95 96 97 98 99 100 101 102 103 104 105
    iconPath: '../../../static/location.png',
    width: 40,
    height: 40,
    anchor: {
      x: 0.5,
      y: 1
    },
    callout: {
      content: '首都北京\n天安门',
      color: '#00BFFF',
      fontSize: 12,
106
      borderRadius: 10,
Anne_LXM's avatar
Anne_LXM 已提交
107
      borderWidth: 2,
108 109
      borderColor: '#333300',
      bgColor: '#CCFF11',
Anne_LXM's avatar
Anne_LXM 已提交
110
      padding: 5,
111
      display: 'ALWAYS'
DCloud-WZF's avatar
DCloud-WZF 已提交
112
    } as MapMarkerCallout
Anne_LXM's avatar
Anne_LXM 已提交
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
  },
  {
    id: 2,
    latitude: 39.894793,
    longitude: 116.321592,
    title: '北京西站',
    iconPath: '../../../static/location.png',
    width: 40,
    height: 40,
    anchor: {
      x: 0.5,
      y: 1
    },
    callout: {
      content: '北京西站',
      color: '#ffffff',
      fontSize: 12,
      borderRadius: 10,
      borderWidth: 2,
      borderColor: '#333300',
      bgColor: '#ff5500',
      padding: 5,
      display: 'ALWAYS'
DCloud-WZF's avatar
DCloud-WZF 已提交
136
    } as MapMarkerCallout
Anne_LXM's avatar
Anne_LXM 已提交
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
  },
  {
    id: 3,
    latitude: 39.902344,
    longitude: 116.484822,
    title: '北京东站',
    iconPath: '../../../static/location.png',
    width: 20,
    height: 20,
    anchor: {
      x: 0.5,
      y: 1
    },
    callout: {
      content: '北京东站',
      color: '#ffffff',
      fontSize: 12,
      borderRadius: 10,
      borderWidth: 2,
      borderColor: '#333300',
      bgColor: '#ff5500',
      padding: 5,
      display: 'ALWAYS'
DCloud-WZF's avatar
DCloud-WZF 已提交
160
    } as MapMarkerCallout
Anne_LXM's avatar
Anne_LXM 已提交
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
  },
  {
    id: 4,
    latitude: 39.865011,
    longitude: 116.379007,
    title: '北京南站',
    iconPath: '../../../static/location.png',
    width: 40,
    height: 40,
    anchor: {
      x: 0.5,
      y: 1
    },
    callout: {
      content: '北京南站',
      color: '#ffffff',
      fontSize: 12,
      borderRadius: 10,
      borderWidth: 2,
      borderColor: '#333300',
      bgColor: '#00aa00',
      padding: 5,
      display: 'ALWAYS'
DCloud-WZF's avatar
DCloud-WZF 已提交
184
    } as MapMarkerCallout
Anne_LXM's avatar
Anne_LXM 已提交
185
  },
186 187
  ];

Anne_LXM's avatar
Anne_LXM 已提交
188

DCloud-WZF's avatar
DCloud-WZF 已提交
189
  const testPolyline: Polyline[] = [{
190 191 192 193 194 195 196 197 198
    points: [{
      latitude: 39.925539,
      longitude: 116.279037
    },
    {
      latitude: 39.925539,
      longitude: 116.520285
    }],
    color: '#FFCCFF',
199
    width: 7,
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
    dottedLine: true,
    arrowLine: true,
    borderColor: '#000000',
    borderWidth: 2
  },
  {
    points: [{
      latitude: 39.938698,
      longitude: 116.275177
    },
    {
      latitude: 39.966069,
      longitude: 116.289253
    },
    {
      latitude: 39.944226,
      longitude: 116.306076
    },
    {
      latitude: 39.966069,
      longitude: 116.322899
    },
    {
      latitude: 39.938698,
      longitude: 116.336975
    }],
    color: '#CCFFFF',
    width: 5,
Anne_LXM's avatar
Anne_LXM 已提交
228
    dottedLine: false,
229 230 231 232 233 234
    arrowLine: true,
    borderColor: '#CC0000',
    borderWidth: 3
  }
  ];

DCloud-WZF's avatar
DCloud-WZF 已提交
235
  const testPolygons : Polygon[] = [{
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281
    points: [{
      latitude: 39.781892,
      longitude: 116.293413
    },
    {
      latitude: 39.787600,
      longitude: 116.391842
    },
    {
      latitude: 39.733187,
      longitude: 116.417932
    },
    {
      latitude: 39.704653,
      longitude: 116.338255
    }],
    fillColor: '#FFCCFF',
    strokeWidth: 3,
    strokeColor: '#CC99CC',
    zIndex: 11
  },
  {
    points: [{
      latitude: 39.887600,
      longitude: 116.518932
    },
    {
      latitude: 39.781892,
      longitude: 116.518932
    },
    {
      latitude: 39.781892,
      longitude: 116.428932
    },
    {
      latitude: 39.887600,
      longitude: 116.428932
    }
    ],
    fillColor: '#CCFFFF',
    strokeWidth: 5,
    strokeColor: '#CC0000',
    zIndex: 3
  }
  ];

DCloud-WZF's avatar
DCloud-WZF 已提交
282
  const testCircles: Circle[] = [{
283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
    latitude: 39.996441,
    longitude: 116.411146,
    radius: 15000,
    strokeWidth: 5,
    color: '#CCFFFF',
    fillColor: '#CC0000'
  },
  {
    latitude: 40.096441,
    longitude: 116.511146,
    radius: 12000,
    strokeWidth: 3,
    color: '#CCFFFF',
    fillColor: '#FFCCFF'
  },
  {
    latitude: 39.896441,
    longitude: 116.311146,
    radius: 9000,
    strokeWidth: 1,
    color: '#CCFFFF',
    fillColor: '#CC0000'
  }
  ];

DCloud-WZF's avatar
DCloud-WZF 已提交
308
  const testIncludePoints :LocationObject[] = [{
309 310 311 312 313 314 315 316 317 318
    latitude: 39.989631,
    longitude: 116.481018,
  },
  {
    latitude: 39.9086920000,
    longitude: 116.3974770000,
  }
  ];


DCloud-WZF's avatar
DCloud-WZF 已提交
319 320
  const mapContext = ref(null as MapContext | null);
  const location = ref({ longitude: 116.39742, latitude: 39.909 } as LocationObject);
Anne_LXM's avatar
Anne_LXM 已提交
321 322
  const rotate = ref(0);
  const skew = ref(0);
Anne_LXM's avatar
Anne_LXM 已提交
323
  // 自动化测试
Anne_LXM's avatar
Anne_LXM 已提交
324
  const autoTest = ref(false);
Anne_LXM's avatar
Anne_LXM 已提交
325
  const updateAutoTest = (value : boolean) => {
Anne_LXM's avatar
Anne_LXM 已提交
326 327 328 329 330
    autoTest.value = value
  }


  const jestResult = reactive({
331 332
    translateMarkerMsg: "",
    animationEnd: false,
Anne_LXM's avatar
Anne_LXM 已提交
333
    centerPoints: {
334 335
      latitude: 0,
      longitude: 0
Anne_LXM's avatar
Anne_LXM 已提交
336 337
    },
    southwest: {
338 339
      latitude: 0,
      longitude: 0
Anne_LXM's avatar
Anne_LXM 已提交
340 341
    },
    northeast: {
342 343
      latitude: 0,
      longitude: 0
Anne_LXM's avatar
Anne_LXM 已提交
344
    },
345 346
    moveToLocationMsg: "",
    scale: 0,
Anne_LXM's avatar
Anne_LXM 已提交
347 348
  } as TypeJestResult);

349

Anne_LXM's avatar
Anne_LXM 已提交
350
  onReady(() => {
DCloud-WZF's avatar
DCloud-WZF 已提交
351
    mapContext.value = uni.createMapContext("map1", getCurrentInstance()!.proxy!)
Anne_LXM's avatar
Anne_LXM 已提交
352 353
  });

Anne_LXM's avatar
Anne_LXM 已提交
354
  const scale = ref(13);
Anne_LXM's avatar
Anne_LXM 已提交
355
  const confirm_scale_input = (value : number) => {
Anne_LXM's avatar
Anne_LXM 已提交
356 357 358
    scale.value = value
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
359
  const controls = ref([] as Control[]);
Anne_LXM's avatar
Anne_LXM 已提交
360
  const addControls = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
361
    controls.value = [{
Anne_LXM's avatar
Anne_LXM 已提交
362 363 364 365 366 367
      id: 1,
      position: {
        left: 5,
        top: 180,
        width: 30,
        height: 30
DCloud-WZF's avatar
DCloud-WZF 已提交
368
      } as ControlPosition,
Anne_LXM's avatar
Anne_LXM 已提交
369 370
      iconPath: '../../../static/uni.png',
      clickable: true
371
    } as Control]
372
  }
Anne_LXM's avatar
Anne_LXM 已提交
373

Anne_LXM's avatar
Anne_LXM 已提交
374
  const showLocation = ref(false);
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
375 376 377 378 379 380 381 382
  const enable3D = ref(false);
  const showCompass = ref(false);
  const enableOverlooking = ref(false);
  const enableRotate = ref(false);
  const enableZoom = ref(true);
  const enableScroll = ref(true);
  const enableSatellite = ref(false);
  const enableTraffic = ref(false);
Anne_LXM's avatar
Anne_LXM 已提交
383
  const change_show_location = (checked : boolean) => {
Anne_LXM's avatar
Anne_LXM 已提交
384 385 386
    showLocation.value = checked
  }

taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418
  const change_enable_3d = (checked : boolean) => {
    enable3D.value = checked
  }

  const change_show_campass = (checked : boolean) => {
    showCompass.value = checked
  }

  const change_enable_overlooking = (checked : boolean) => {
    enableOverlooking.value = checked
  }

  const change_enable_rotate = (checked : boolean) => {
    enableRotate.value = checked
  }

  const change_enable_zoom = (checked : boolean) => {
    enableZoom.value = checked
  }

  const change_enable_scroll = (checked : boolean) => {
    enableScroll.value = checked
  }

  const change_enable_satellite = (checked : boolean) => {
    enableSatellite.value = checked
  }

  const change_enable_traffic = (checked : boolean) => {
    enableTraffic.value = checked
  }

DCloud-WZF's avatar
DCloud-WZF 已提交
419
  const includePoints = ref([] as LocationObject[]);
Anne_LXM's avatar
Anne_LXM 已提交
420 421 422 423 424
  const includePoint = () => {
    includePoints.value = testIncludePoints;
  };


DCloud-WZF's avatar
DCloud-WZF 已提交
425
  let markers = ref([] as Marker[]);
Anne_LXM's avatar
Anne_LXM 已提交
426
  const addMarkers = () => {
Anne_LXM's avatar
Anne_LXM 已提交
427
    scale.value = 11
DCloud-WZF's avatar
DCloud-WZF 已提交
428 429
    const temp = JSON.parse<Marker[]>(JSON.stringify(testMarkers))!
    markers.value = temp
Anne_LXM's avatar
Anne_LXM 已提交
430 431
  };

Anne_LXM's avatar
Anne_LXM 已提交
432
  const removeMarker = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
433 434 435 436 437 438 439 440 441 442 443
    // #ifdef APP
    mapContext.value?.removeMarkers({markerIds:[4]})
    // #endif
    // #ifdef WEB
    const index = markers.value.findIndex((marker: Marker):boolean=>{
       return marker.id == 4
    });
    if (index != -1) {
      delete markers.value[index].label;
      markers.value.splice(index, 1);
    } else {
Anne_LXM's avatar
Anne_LXM 已提交
444 445 446 447 448
      uni.showToast({
        title: '未找到该标记点',
        icon: 'none'
      });
    }
DCloud-WZF's avatar
DCloud-WZF 已提交
449
    // #endif
Anne_LXM's avatar
Anne_LXM 已提交
450 451
  };

452
  // #ifdef WEB
Anne_LXM's avatar
Anne_LXM 已提交
453
  const addMarkersLabel = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
454
    markers.value.forEach((marker, index) => {
Anne_LXM's avatar
Anne_LXM 已提交
455
      marker.label = {
456
        content: 'Hello Label' + (index + 1),
Anne_LXM's avatar
Anne_LXM 已提交
457 458 459 460
        color: '#aa00ff',
        fontSize: 12,
        x: 5,
        y: 0,
461 462
        borderColor: '#333300',
        borderWidth: 2,
Anne_LXM's avatar
Anne_LXM 已提交
463 464 465 466 467 468
        borderRadius: 20,
        bgColor: '#aaffff',
        padding: 10
      };
    });
  };
DCloud-WZF's avatar
DCloud-WZF 已提交
469
  // #endif
Anne_LXM's avatar
Anne_LXM 已提交
470 471 472 473


  const polyline = ref([] as Polyline[]);
  const addPolyline = () => {
Anne_LXM's avatar
Anne_LXM 已提交
474
    scale.value = 11;
DCloud-WZF's avatar
DCloud-WZF 已提交
475
    polyline.value = JSON.parse<Polyline[]>(JSON.stringify(testPolyline))!;
Anne_LXM's avatar
Anne_LXM 已提交
476
  };
Anne_LXM's avatar
Anne_LXM 已提交
477 478
  const removePolyline = () => {
    if (polyline.value.length > 1) {
DCloud-WZF's avatar
DCloud-WZF 已提交
479
      polyline.value = JSON.parse<Polyline[]>(JSON.stringify(testPolyline))!.splice(0, 1);
Anne_LXM's avatar
Anne_LXM 已提交
480 481
    }
  };
Anne_LXM's avatar
Anne_LXM 已提交
482 483


DCloud-WZF's avatar
DCloud-WZF 已提交
484
  const polygons = ref([] as Polygon[]);
Anne_LXM's avatar
Anne_LXM 已提交
485 486
  const addPolygons = () => {
    scale.value = 10;
DCloud-WZF's avatar
DCloud-WZF 已提交
487
    polygons.value = JSON.parse<Polygon[]>(JSON.stringify(testPolygons))!;
Anne_LXM's avatar
Anne_LXM 已提交
488
  };
Anne_LXM's avatar
Anne_LXM 已提交
489 490
  const removePolygon = () => {
    if (polygons.value.length > 1) {
DCloud-WZF's avatar
DCloud-WZF 已提交
491
      polygons.value = JSON.parse<Polygon[]>(JSON.stringify(testPolygons))!.splice(0, 1);
Anne_LXM's avatar
Anne_LXM 已提交
492 493
    }
  };
Anne_LXM's avatar
Anne_LXM 已提交
494 495


DCloud-WZF's avatar
DCloud-WZF 已提交
496
  const circles = ref([] as Circle[]);
Anne_LXM's avatar
Anne_LXM 已提交
497 498
  const addCircles = () => {
    scale.value = 10;
DCloud-WZF's avatar
DCloud-WZF 已提交
499
    circles.value = JSON.parse<Circle[]>(JSON.stringify(testCircles))!;
Anne_LXM's avatar
Anne_LXM 已提交
500
  };
Anne_LXM's avatar
Anne_LXM 已提交
501 502
  const removeCircle = () => {
    if (circles.value.length > 1) {
DCloud-WZF's avatar
DCloud-WZF 已提交
503
      circles.value = JSON.parse<Circle[]>(JSON.stringify(testCircles))!.slice(1);
Anne_LXM's avatar
Anne_LXM 已提交
504 505 506
    }
  };

Anne_LXM's avatar
Anne_LXM 已提交
507
  const handleGetCenterLocation = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
508
      mapContext.value?.getCenterLocation({
Anne_LXM's avatar
Anne_LXM 已提交
509
        success: ret => {
Anne_LXM's avatar
Anne_LXM 已提交
510
          // console.log('getCenterLocation',ret);
Anne_LXM's avatar
Anne_LXM 已提交
511
          jestResult.centerPoints = ret;
512
          if (!autoTest.value) {
Anne_LXM's avatar
Anne_LXM 已提交
513 514 515 516
            uni.showModal({
              content: JSON.stringify(ret)
            });
          }
Anne_LXM's avatar
Anne_LXM 已提交
517 518 519 520 521
        }
      });
  };

  const handleGetRegion = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
522
      mapContext.value?.getRegion({
Anne_LXM's avatar
Anne_LXM 已提交
523
        success: ret => {
Anne_LXM's avatar
Anne_LXM 已提交
524
          // console.log('getRegion',JSON.stringify(ret));
Anne_LXM's avatar
Anne_LXM 已提交
525 526
          jestResult.southwest = ret.southwest;
          jestResult.northeast = ret.northeast
527
          if (!autoTest.value) {
Anne_LXM's avatar
Anne_LXM 已提交
528 529 530 531
            uni.showModal({
              content: JSON.stringify(ret)
            });
          }
Anne_LXM's avatar
Anne_LXM 已提交
532 533 534 535
        }
      });
  };

Anne_LXM's avatar
Anne_LXM 已提交
536

Anne_LXM's avatar
Anne_LXM 已提交
537
  const handleTranslateMarker = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
538
      mapContext.value?.translateMarker({
Anne_LXM's avatar
Anne_LXM 已提交
539 540 541 542 543
        markerId: 1,
        destination: {
          latitude: 39.989631,
          longitude: 116.481018
        },
544 545
        autoRotate: true,
        rotate: 10,
Anne_LXM's avatar
Anne_LXM 已提交
546
        duration: 2000,
DCloud-WZF's avatar
DCloud-WZF 已提交
547 548
        moveWithRotate: true,
        // #ifdef WEB
Anne_LXM's avatar
Anne_LXM 已提交
549
        animationEnd: () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
550
          console.log('动画结束');
Anne_LXM's avatar
Anne_LXM 已提交
551
          jestResult.animationEnd = true;
Anne_LXM's avatar
Anne_LXM 已提交
552
        },
DCloud-WZF's avatar
DCloud-WZF 已提交
553
        // #endif
Anne_LXM's avatar
Anne_LXM 已提交
554
        success: ret => {
555
          console.log('handleTranslateMarker',JSON.stringify(ret));
DCloud-WZF's avatar
DCloud-WZF 已提交
556 557
          const result = ret as UTSJSONObject
          jestResult.translateMarkerMsg = result["errMsg"] as string;
Anne_LXM's avatar
Anne_LXM 已提交
558
        },
Anne_LXM's avatar
Anne_LXM 已提交
559 560
        fail: error => {
          console.log(error)
Anne_LXM's avatar
Anne_LXM 已提交
561 562
        }
      });
DCloud-WZF's avatar
DCloud-WZF 已提交
563
      mapContext.value?.translateMarker({
Anne_LXM's avatar
Anne_LXM 已提交
564 565 566 567 568 569 570 571 572
        markerId: 2,
        destination: {
          latitude: 39.902344,
          longitude: 116.484822,
        },
        autoRotate: true,
        rotate: 0,
        duration: 2000,
        success: ret => {
DCloud-WZF's avatar
DCloud-WZF 已提交
573
          console.log('handleTranslateMarker', JSON.stringify(ret));
Anne_LXM's avatar
Anne_LXM 已提交
574 575 576 577 578
        },
        fail: error => {
          console.log(error)
        }
      });
Anne_LXM's avatar
Anne_LXM 已提交
579 580
  };

Anne_LXM's avatar
Anne_LXM 已提交
581 582

  const handleGetScale = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
583
      mapContext.value?.getScale({
Anne_LXM's avatar
Anne_LXM 已提交
584
        success: res => {
585 586 587 588 589 590 591 592
          // console.log('getScale',res);
          scale.value = res.scale
          jestResult.scale = res.scale
          if (!autoTest.value) {
            uni.showModal({
              content: '当前地图的缩放级别为:' + res.scale
            });
          }
Anne_LXM's avatar
Anne_LXM 已提交
593 594
        },
        fail: error => {
595
          console.log(error)
Anne_LXM's avatar
Anne_LXM 已提交
596 597 598 599 600
        },
      });
  };

  const handleMoveToLocation = () => {
DCloud-WZF's avatar
DCloud-WZF 已提交
601
      mapContext.value?.moveToLocation({
602 603 604
        latitude: 39.909,
        longitude: 116.39742,
        success: res => {
605
          console.log('moveToLocation',res);
DCloud-WZF's avatar
DCloud-WZF 已提交
606
          const result = res as UTSJSONObject
607
          jestResult.moveToLocationMsg = result["errMsg"] as string;
DCloud-WZF's avatar
DCloud-WZF 已提交
608

609 610 611 612
          if (!autoTest.value) {
            uni.showModal({
              content: JSON.stringify(res)
            });
Anne_LXM's avatar
Anne_LXM 已提交
613
          }
614 615 616 617
        },
        fail: error => {
          console.log(error)
        }
Anne_LXM's avatar
Anne_LXM 已提交
618 619 620
      });
  };

taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
621
  const maptap = (e : UniMapTapEvent) => {
Anne_LXM's avatar
Anne_LXM 已提交
622
    // console.log('点击地图时触发',e)
Anne_LXM's avatar
Anne_LXM 已提交
623
    uni.showModal({
624
      content: JSON.stringify(e.detail)
Anne_LXM's avatar
Anne_LXM 已提交
625 626 627
    });
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
628
  const onmarkertap = (e : UniMapMarkerTapEvent) => {
Anne_LXM's avatar
Anne_LXM 已提交
629
    // console.log('点击标记点时触发',e)
Anne_LXM's avatar
Anne_LXM 已提交
630
    uni.showModal({
631
      content: JSON.stringify(e.detail)
Anne_LXM's avatar
Anne_LXM 已提交
632 633 634
    });
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
635
  const oncontroltap = (e : UniMapControlTapEvent) => {
Anne_LXM's avatar
Anne_LXM 已提交
636
    // console.log('点击控件时触发',e)
Anne_LXM's avatar
Anne_LXM 已提交
637
    uni.showModal({
638
      content: JSON.stringify(e.detail)
Anne_LXM's avatar
Anne_LXM 已提交
639 640 641
    });
  };

Anne_LXM's avatar
Anne_LXM 已提交
642
  const oncallouttap = (e : UniEvent) => {
Anne_LXM's avatar
Anne_LXM 已提交
643
    // console.log('点击标记点对应的气泡时触发',e)
Anne_LXM's avatar
Anne_LXM 已提交
644 645 646 647 648
    uni.showModal({
      content: JSON.stringify(e)
    });
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
649
  const onupdated = (e : UniMapUpdatedEvent) => {
650
    console.log('在地图渲染更新完成时触发', e)
Anne_LXM's avatar
Anne_LXM 已提交
651 652
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
653
  const onregionchange = (e : UniMapRegionChangeEvent) => {
654
    console.log('视野发生变化时触发', e.detail)
Anne_LXM's avatar
Anne_LXM 已提交
655 656
  };

DCloud-WZF's avatar
DCloud-WZF 已提交
657
  const onpoitap = (e : UniMapPoiTapEvent) => {
Anne_LXM's avatar
Anne_LXM 已提交
658
    // console.log('点击地图poi点时触发',e)
Anne_LXM's avatar
Anne_LXM 已提交
659
    uni.showModal({
660
      content: JSON.stringify(e.detail)
Anne_LXM's avatar
Anne_LXM 已提交
661 662 663
    });
  };

Anne_LXM's avatar
Anne_LXM 已提交
664 665 666 667 668 669
  defineExpose({
    jestResult,
    autoTest,
    updateAutoTest,
    addControls,
    addMarkers,
670
    // #ifdef WEB
Anne_LXM's avatar
Anne_LXM 已提交
671
    addMarkersLabel,
DCloud-WZF's avatar
DCloud-WZF 已提交
672
    // #endif
Anne_LXM's avatar
Anne_LXM 已提交
673
    removeMarker,
Anne_LXM's avatar
Anne_LXM 已提交
674
    addPolyline,
Anne_LXM's avatar
Anne_LXM 已提交
675
    removePolyline,
Anne_LXM's avatar
Anne_LXM 已提交
676
    addPolygons,
Anne_LXM's avatar
Anne_LXM 已提交
677
    removePolygon,
Anne_LXM's avatar
Anne_LXM 已提交
678
    addCircles,
Anne_LXM's avatar
Anne_LXM 已提交
679
    removeCircle,
Anne_LXM's avatar
Anne_LXM 已提交
680 681 682 683 684 685 686
    includePoint,
    handleGetCenterLocation,
    handleGetRegion,
    handleTranslateMarker,
    handleMoveToLocation,
    handleGetScale
  })
Anne_LXM's avatar
Anne_LXM 已提交
687
</script>
688

Anne_LXM's avatar
Anne_LXM 已提交
689
<style>
690 691 692 693 694 695
  .content {
    flex: 1;
  }

  .map {
    width: 100%;
Anne_LXM's avatar
Anne_LXM 已提交
696
    height: 300px;
697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719
    background-color: #f0f0f0;
  }

  .scrollview {
    flex: 1;
    padding: 10px;
  }

  .list-item {
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    padding: 5px 0px;
  }

  .list-text {
    flex: 1;
  }

  .button {
    margin-top: 5px;
    margin-bottom: 5px;
  }
720 721 722 723 724 725

  .tips {
    font-size: 12px;
    margin-top: 15px;
    opacity: .8;
  }
Anne_LXM's avatar
Anne_LXM 已提交
726
</style>