ホームページ  >  記事  >  ウェブフロントエンド  >  uniapp を使用してシンプルなマップ ナビゲーションを開発する

uniapp を使用してシンプルなマップ ナビゲーションを開発する

青灯夜游
青灯夜游転載
2022-06-09 19:46:417227ブラウズ

uniapp を使用してシンプルなマップ ナビゲーションを開発するにはどうすればよいですか?この記事では簡単な地図の作り方を紹介しますので、ぜひ参考にしてください。

uniapp を使用してシンプルなマップ ナビゲーションを開発する

#最初にレンダリングを見てみましょう

uniapp を使用してシンプルなマップ ナビゲーションを開発する

uniapp を使用してシンプルなマップ ナビゲーションを開発する

##簡単マップ

図 1 のマップでは、点 a が点 b に接続されており、基本的な情報と基本的なコントロール (ズームイン、ズームアウト、指定した点に戻る) がわかります。順を追って説明していきます。

必要な構成

は、

manifest.jsonapp モジュール にある必要があります。マップを作成し、関連するマップの key を追加します。そうでない場合は、関連する開発者プラットフォームに適用できます

uniapp を使用してシンプルなマップ ナビゲーションを開発する

この部分を構成した後、開始できますマップ コンポーネントの使用

マップ マーカー ポイント

ユニアプリ マップでマーカー ポイントを作成するには、属性

markers#を使用する必要があります。 ## 。 まず、

マーカーの共通属性を見てみましょう

名前##idマークポイントidnumber true緯度緯度番号true経度経度numbertrue表示されたアイコンマーク ポイントの上のバブル ボックスをカスタマイズします##Objectfalselabelマークされたポイントにラベルを追加しますObjectfalse詳細については、次を確認してください: https://uniapp.dcloud.io/component/map.html
説明 タイプ 必須
##iconPath
string false callout

これらを理解した後、

マーカーを使用できるようになります。

属性はマーカー ポイントを作成します。

markers
属性は配列型なので、マーカー ポイントは次のように作成する必要があります

    this.covers = [ 
        {
            id: 1,
            latitude: 34.7486,
            longitude: 113.6709,
            iconPath: '../../static/shop.png',
            title: "目的地"
        }
    ];
さらにマーカー ポイントを追加したい場合は、続行できます。 object,

object はマーキング ポイントを表します

mount

    <map :markers="covers"></map>

座標接続

座標を接続したい場合は、polyline 属性を使用する必要があります。

polyline

##Name

Description の共通属性を見てみましょう。タイプ#points緯度と経度の配列Array true falsefalse#iconPath表示されたアイコンstring falsearrowLine矢印のある線BooleanfalsecolorListレインボー表示Arrayfalse

平台差异请查看

https://uniapp.dcloud.io/component/map.html#app平台地图服务商差异

这里我们要注意 两个坑,作者亲踩

  • polyline 属性是一个数组

    polyline 之所以是一个数组是因为他可以同时创建多条线并且连线,每条线还可以有着不同的颜色、箭头、图标等。

  • points 也是一个数组

    points之所以是一个数组是因为他要确定某一条线上的每一个点,且每个点都应该由经纬度构成

所以 polyline 的正确写法应该是这样的

    // 连线
    this.polyline = [
        // 第一条线
        {
            // 每个点的经纬度
            points: [{34.7486, 113.6709}, {28.7486, 113.6709}],
            // 颜色
            color: "#000",
            // 宽度
            width: 10
        }
    ]

如果想添加第二条线仅仅只需要在 polyline 中在添加一个 Object挂载

    <map :polyline="polyline"></map>

放大缩小

map 的放大缩依赖于 scale 属性 所以只需要动态改变 scale 属性的值就可以了。 但这里要注意 scale 的取值范围为 3~20,数字类型

这就是放大缩小功能的依赖

uniapp を使用してシンプルなマップ ナビゲーションを開発する

回到指定位置

想要地图回到指定的位置也非常简单,只需要使用 uni.createMapContext() 方法创建一个 mapContent 对象 在使用 附带的 moveToLocatio 方法便可让地图回到指定的位置。

// 回到定位点
goBackToLocation() {
   uni.createMapContext("map").moveToLocation({34.7486, 113.6709});
},

uniapp を使用してシンプルなマップ ナビゲーションを開発する

导航弹框

图二中的地图应用选择弹框则是使用了 h5Plus

nativeUI.actionSheet 方法  创建了弹框

runtime.openURL 方法 打开了 导航软件 或 h5 页面导航

nativeUI情请查看

https://www.html5plus.org/doc/zh_cn/nativeui.html

runtime情请查看

https://www.html5plus.org/doc/zh_cn/runtime.html

    // 导航 会打开导航菜单供用户选择
    openNavigation(longitude, latitude, name) {
        let url = ""; // app url
        let webUrl = ""; // web url 用来为用户未安装导航软件时打开浏览器所使用url
        plus.nativeUI.actionSheet({ //选择菜单
            title: "选择地图应用",
            cancel: "取消",
            buttons: [{title: "高德地图"}] // 可选的地图类型
        }, (e)=> {
                // 判断用户选择的地图
            switch (e.index) {
                //下面是拼接url,不同系统以及不同地图都有不同的拼接字段
                case 1:
                    // 安卓
                    if(plus.os.name == "Android") {
                        url = `androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
                    }else {
                        url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
                    }
                    webUrl = `https://uri.amap.com/marker?position=${longitude},${latitude}&name=${name}&src=mypage&coordinate=gaode`
                    break;
            }
                // 如果选中
            if (url != "") {
                url = encodeURI(url);
                // 打开 app 导航 
                plus.runtime.openURL(url, (err)=>{ // 失败回到
                    // 如果失败则说明未安装 直接 打开网页版进行导航
                    // 毕竟用户可能没有安装app但一定安装的有浏览器
                    plus.runtime.openURL(webUrl);
                });
            }
    })
}

这就是我导航弹窗实现的逻辑了, 这里我仅仅只是用了高德地图的选项,大家可以根据需要增加相应地图app,其他常见的我放在下方了。

腾讯

app url

let appUrl = `qqmap://map/geocoder?coord=${latitude},${longitude}&referer=${腾讯地图key}`

web url

let webUrl = `https://apis.map.qq.com/uri/v1/marker?marker=coord:经度,纬度;title:名称;addr:地址&referer=myapp`

百度

app url

let appUrl = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo`

web url

let webUrl = `http://api.map.baidu.com/marker?location=${latitude},${longitude}&title=${name}&content=${content}&output=html&src=webapp.baidu.openAPIdemo`

推荐:《uniapp教程

必須
#color 線の色 string
width 行幅 #Number

以上がuniapp を使用してシンプルなマップ ナビゲーションを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。