• 技术文章 >web前端 >uni-app

    uniapp怎么打开地图

    PHPzPHPz2023-04-20 14:49:32原创29

    随着智能时代的发展,地图应用已经成为了人们生活中难以缺少的一部分。地图技术的进步也使得开发者们能够更加便捷地使用地图来提供更好的服务。其中,uniapp作为一款跨平台的开发框架,也支持地图的开发和使用。但是对于一些初学者来说,可能会面临如何在uniapp中打开地图的问题。本文将为大家详细介绍如何在uniapp中打开地图。

    一、使用uniapp自带的地图组件

    uniapp提供了uniMap这个组件,可以在uniapp中比较方便地实现地图的展示。具体使用方法如下:

    1.引入uniMap组件

    <template>
       <view>
          <uni-maps :longitude="longitude" :latitude="latitude" :markers="markers"></uni-maps>
       </view>
    </template>
    
    <script>
       export default{
           data(){
                return{
                     longitude: '116.362887',
                     latitude: '39.960143',
                     markers:[
                         {
                               id:1,
                               longitude:'116.362887',
                               latitude:'39.960143',
                               title:'北京站',
                         },
                         {
                               id:2,
                               longitude:'116.407894',
                               latitude:'39.904265',
                               title:'天安门',
                         },
                     ]
                }
            }
        }
    </script>

    可以看到,代码中需要引入uni-maps组件,并传入longitude、latitude、markers三个参数。其中,longitude和latitude表示地图的经纬度,而markers则为可选参数,用于在地图上展示标记。

    2.编写地图的样式

    在上面的代码中,只展示了地图的标记和坐标。如果想要美化地图的外观,需要编写一些样式来控制。下面是一个简单的实现方法:

    .uni-maps{
        height:800rpx;
        width: 100%;
    }
    
    .uni-maps /deep/ .xm-map-scale {
        background-color: #fff;
        color: #666;
    }
    
    .uni-maps /deep/ .xm-map-timesvg{
        width:18px;
    }

    需要注意的是,地图的容器必须设置高度,否则无法正常展示。

    二、使用第三方地图插件

    uniapp还支持使用第三方的地图插件。以高德地图为例,需要先在main.js中配置相关参数:

    import Vue from 'vue';
    import App from './App';
    import store from './store';
    import {
       router,
       // #ifdef APP-PLUS
       mpvueAndroidBackEvent,
       // #endif
       RouterMount
    } from './router';
    import request from '@/common/request';
    
    import index from '@/pages/index/index.vue';
    
    Vue.config.productionTip = false;
    App.mpType = 'app';
    
    Vue.prototype.$http = request;
    
    let amapPlugin = requirePlugin('amapPlugin');
    
    Vue.prototype.$amapPlugin = amapPlugin;
    
    Vue.component('index', index);
    
    // #ifdef APP-PLUS
    mpvueAndroidBackEvent(router, () => {
       console.log('android-hardware-back-event');
       let pages = getCurrentPages();
       console.log('pages: ', pages);
       if (pages.length > 1) {
         router.back(-1);
       } else {
         router.push('/pages/tabbar/index');
         return;
       }
    });
    // #endif
    
    // #ifdef H5
    router.onReady(() => {
       if (router.app.$route.path === '/') {
          router.push('/pages/tabbar/index');
       }
    });
    // #endif
    
    RouterMount(App, router, '#app');

    在vue组件中使用amapPlugin插件:

    <template>
       <view style="height: 100%">
          <view class="map">
             <map :id='id' :mp-location='true' :show-location='true' :markers='markersList' :scale="15"></map>
          </view>
       </view>
    </template>
    <script>
       export default {
          data() {
             return {
                id: 'map',
                markersList: [
                   {
                      id: 0,
                      iconPath: '../../static/images/icon_location.png',
                      longitude: '',
                      latitude: '',
                      width: 40,
                      height: 40
                   }
                ]
             }
          },
          onReady() {
             let vm = this;
             let amapPlugin = vm.$amapPlugin.createAmap({
                key: 'your amap key',//此处填写你的高德地图key
                version: '',
             });
             wx.getLocation({
                type: 'gcj02',
                success: res => {
                   console.log(res);
                   if (res.longitude && res.latitude) {
                      vm.markersList[0].longitude = res.longitude;
                      vm.markersList[0].latitude = res.latitude;
                      let marker = vm.markersList[0];
                      let cpoint = [res.longitude, res.latitude];
                      amapPlugin.getRegeo({
                         location: cpoint.join(),
                         success: function (data) {
                            marker.title = data[0].name;
                            marker.address = data[0].desc;
                            vm.markersList = [marker];
                         },
                         fail: function (info) {
                            console.log(info);
                         },
                      });
                   }
                }
             })
          }
       }
    </script>
    <style>
       .map {
          height: 100%;
          overflow: hidden;
       }
    
       map,
       image,
       textarea,
       scroll-view {
          width: 100%;
          height: 100%;
       }
    </style>

    需要注意的是,使用第三方地图插件需要在main.js中进行配置,并在.vue组件中使用createAmap方法来调用。

    总结:

    在uniapp中使用地图有两种方式,一种是使用uniapp自带的地图组件,另一种则是使用第三方地图插件。具体根据自己的需求来选择使用哪种方法。无论是哪种方式,都需要先对地图插件有一定的了解,熟悉地图插件的调用方法,才能更好地进行开发。

    以上就是uniapp怎么打开地图的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:Uniapp中的POST方法不可用的解决方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • uniapp怎么用终端创建• uniapp蓝牙发送不过去怎么回事• uniapp调用子组件方法失败怎么办• uniapp怎么点击跳转到主页• uniapp怎么在main.js导入js
    1/1

    PHP中文网