• 【uniapp】Google Maps


    话不多说 直接上干货 提前申请谷歌地图账号
    一、新建地图 使用h5+获取当前定位或者使用三方uniapp插件

    1. var coords = ""
    2. navigator.geolocation.getCurrentPosition(function(position) {
    3. coords = {
    4. lat: position.coords.latitude,
    5. lng: position.coords.longitude
    6. };
    7. lats = position.coords.latitude;
    8. lngs = position.coords.longitude
    9. });
    10. map = new google.maps.Map(document.getElementById('map'), {
    11. zoom: zoom,
    12. center: coords,
    13. mapId: "your map id",
    14. animation: 'BOUNCE'
    15. });

    二、画圆

    1. cityCircle = new google.maps.Circle({
    2. strokeColor: "#FF0000", // 边框颜色
    3. strokeOpacity: 0.6, // 边框透明度
    4. strokeWeight: 0.8, // 边框宽度
    5. fillColor: "#FF0000", // 填充颜色
    6. fillOpacity: 0.15, // 填充透明度
    7. map,
    8. center: {
    9. lat: lats,
    10. lng: lngs
    11. },
    12. radius: maxValue * 500, //半径
    13. });

    三、绘制marker点

    1. let min = 500;
    2. let max = 1000;
    3. let randomNum = Math.floor(Math.random() * (max - min + 1)) + min;
    4. for (let i = 0; i < 5; i++) {
    5. var locObj = {
    6. lat: (lats + (Math.floor(Math.random() * 21) - 15) / randomNum) * 1,
    7. lng: (lngs - (Math.floor(Math.random() * 21) - 15) / randomNum) * 1,
    8. title: randomChinese(10)
    9. }
    10. const marker = new google.maps.Marker({
    11. position: locObj,
    12. title: locObj.title + '-' + i,
    13. imgUrl: 'https://picsum.photos/450/450?random=' + Math.floor(Math.random() * 100),
    14. icon: {
    15. url: "https://maps.gstatic.com/mapfiles/ms2/micons/blue.png",
    16. scaledSize: new google.maps.Size(50, 50),
    17. },
    18. map: map
    19. });
    20. markers.push(marker)
    21. }

    四、搜索框

    1. // 创建 Autocomplete 实例
    2. const input = document.getElementById("search-box");
    3. const autocomplete = new google.maps.places.Autocomplete(input);
    4. // 设置 Autocomplete 参数
    5. autocomplete.setFields(["geometry", "name"]);
    6. // 添加事件监听器,当用户选择某个地点时,在地图上标记出所选位置
    7. autocomplete.addListener("place_changed", function() {
    8. const place = autocomplete.getPlace();
    9. if (!place.geometry) {
    10. console.log("返回的地理信息无效!");
    11. return;
    12. }
    13. // 将地图中心点指向用户所选位置,并设置标记
    14. if (searchmarker) { //去除marker标记点
    15. searchmarker.setMap(null)
    16. searchmarker = ""
    17. }
    18. map.setCenter(place.geometry.location);
    19. searchmarker = new google.maps.Marker({
    20. map: map,
    21. position: place.geometry.location,
    22. title: place.name,
    23. });
    24. });

    五、绘制省市区

    1. const polygonsData = []
    2. //cityObjArr 请前往dcloud获取相关数据【https://ext.dcloud.net.cn/plugin?id=11873
    3. for (var k = 0; k < cityObjArr.length; k++) {
    4. var obj = {
    5. polygonCoords: cityObjArr[k],
    6. color: getRandomColor(),
    7. strokeWeight: 2,
    8. }
    9. polygonsData.push(obj)
    10. }
    11. polygonsData.forEach((polygon) => {
    12. var polygonObj = new google.maps.Polygon({
    13. paths: polygon.polygonCoords,
    14. strokeColor: getRandomColor(), // 边界线颜色
    15. strokeOpacity: 0.8, // 边界线透明度
    16. strokeWeight: 2, // 边界线厚度
    17. fillColor: getRandomColor(), // 填充颜色
    18. fillOpacity: 0.2, // 填充透明度
    19. map: map,
    20. });
    21. newPolygon.push(polygonObj)
    22. });

    六、画路线

    1. const directionsService = new google.maps.DirectionsService();
    2. var TravelMode = [{
    3. id: 1,
    4. name: "DRIVING",
    5. color: "#ea4335"
    6. },
    7. {
    8. id: 2,
    9. name: "WALKING",
    10. color: "#7825fa"
    11. },
    12. {
    13. id: 3,
    14. name: "BICYCLING",
    15. color: "#fa6200"
    16. },
    17. {
    18. id: 4,
    19. name: "TRANSIT",
    20. color: "#ff00ff"
    21. }
    22. ]
    23. for (var i = 0; i < TravelMode.length; i++) {
    24. startDrawRoute(directionsService, TravelMode[i])
    25. }
    26. function startDrawRoute(directionsService, travelMode) {
    27. // 随机数字而已 动态数字 方便查询效果
    28. let min = 5000;
    29. let max = 10000;
    30. let randomNum = (Math.floor(Math.random() * (max - min + 1)) + min) / 500000;
    31. // 起点坐标
    32. const origin = {
    33. lat: 34.7382820208 + randomNum,
    34. lng: 113.64360881345 + randomNum
    35. };
    36. // 终点坐标
    37. const destination = {
    38. lat: 34.78194 + randomNum,
    39. lng: 113.622512 + randomNum
    40. };
    41. var directionsRenderer = new google.maps.DirectionsRenderer({
    42. map: map,
    43. suppressMarkers: true, // 关闭默认图标
    44. polylineOptions: {
    45. strokeColor: travelMode.color, //设置路线颜色
    46. strokeWeight: 5 //设置路线宽度
    47. },
    48. // draggable: true //允许用户拖动路线
    49. });
    50. const request = {
    51. origin: origin,
    52. destination: destination,
    53. travelMode: travelMode.name, //绘制路线的模式
    54. };
    55. directionsService.route(request,
    56. (result, status) => {
    57. if (status === "OK") {
    58. directionsRenderer.setDirections(result);
    59. directionsRenderer.setMap(map);
    60. // 获取起点和终点的信息并添加标记
    61. var startMarker = new google.maps.Marker({
    62. position: result.routes[0].legs[0].start_location,
    63. map: map,
    64. icon: {
    65. url: "https://maps.gstatic.com/mapfiles/ms2/micons/pink.png",
    66. scaledSize: new google.maps.Size(50, 50),
    67. },
    68. });
    69. drawRouteMarker.push(startMarker)
    70. var endMarker = new google.maps.Marker({
    71. position: result.routes[0].legs[0].end_location,
    72. map: map,
    73. icon: {
    74. url: "https://maps.gstatic.com/mapfiles/ms2/micons/orange.png",
    75. scaledSize: new google.maps.Size(50, 50),
    76. },
    77. });
    78. drawRouteMarker.push(endMarker)
    79. directionsRendererArr.push(directionsRenderer)
    80. //显示路线的总距离
    81. console.log('距离===', directionsRenderer.directions.routes[0].legs[0].distance.text)
    82. console.log('时间===', directionsRenderer.directions.routes[0].legs[0].duration.text)
    83. // for (var k = 0; k < directionsRenderer.directions.routes[0].legs[0].steps.length; k++) {
    84. // console.log(directionsRenderer.directions.routes[0].legs[0].steps[k].instructions)
    85. // }
    86. } else {
    87. // console.log(travelMode, "绘制失败===", result)
    88. }
    89. }
    90. );
    91. }

    这个时候相信你已经看到了地图【详细代码请前往dcloud插件市场查看marker标记点、省市区颜色标记、输入框搜索、范围选择、信息弹窗等】

    祝:学习愉快、工作顺利

    温馨提示:源码获取方式 关注【码农园区】 回复   “ google”   

    在这里插入图片描述

  • 相关阅读:
    不同路径的数目
    C语言程序-猜数字for
    拼图小游戏
    聚焦私域营销降本提效,国联股份与火山引擎数智平台展开合作
    Dart(3)-常量
    [FBCTF2019]RCEService
    YOLO系列 --- YOLOV7算法(七):YOLOV7算法总结
    【算法题解】拓扑序计数+树形DP
    古籍数字化平台中的OCR:这个平台更精准
    外卖系统关于redis使用解决高并发情况
  • 原文地址:https://blog.csdn.net/lwzhang1101/article/details/134461188