uniapp を使用してシンプルなマップ ナビゲーションを開発するにはどうすればよいですか?この記事では簡単な地図の作り方を紹介しますので、ぜひ参考にしてください。
#最初にレンダリングを見てみましょう
##簡単マップ
図 1 のマップでは、点 a が点 b に接続されており、基本的な情報と基本的なコントロール (ズームイン、ズームアウト、指定した点に戻る) がわかります。順を追って説明していきます。
必要な構成
は、
manifest.json の
app モジュール にある必要があります。マップを作成し、関連するマップの
key を追加します。そうでない場合は、関連する開発者プラットフォームに適用できます
この部分を構成した後、開始できますマップ コンポーネントの使用
マップ マーカー ポイント
ユニアプリ マップでマーカー ポイントを作成するには、属性
markers#を使用する必要があります。 ## 。
まず、
マーカーの共通属性を見てみましょう
名前
説明
タイプ
必須
##id
マークポイントid number true
緯度
緯度 番号 true
経度
経度 number true
##iconPath
表示されたアイコン
string
false
callout
マーク ポイントの上のバブル ボックスをカスタマイズします##Object false label マークされたポイントにラベルを追加します
Object false
詳細については、次を確認してください:
https://uniapp.dcloud.io/component/map.html
これらを理解した後、
マーカーを使用できるようになります。 属性はマーカー ポイントを作成します。
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 #color 線の色 string falsewidth 行幅 #Number false #iconPath 表示されたアイコン string false arrowLine 矢印のある線 Boolean false colorList レインボー表示 Array false 平台差异请查看
https://uniapp.dcloud.io/component/map.html#app平台地图服务商差异
这里我们要注意 两个坑 ,作者亲踩
所以 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,数字类型
这就是放大缩小功能的依赖
回到指定位置
想要地图回到指定的位置也非常简单,只需要使用 uni.createMapContext()
方法创建一个 mapContent 对象 在使用 附带的 moveToLocatio
方法便可让地图回到指定的位置。
// 回到定位点
goBackToLocation() {
uni.createMapContext("map").moveToLocation({34.7486, 113.6709});
}, ログイン後にコピー
导航弹框 图二中的地图应用选择弹框则是使用了 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教程 》
以上がuniapp を使用してシンプルなマップ ナビゲーションを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
2023-04-26 17:59:18
2023-04-26 17:47:48
2023-04-26 17:41:42
2023-04-26 17:37:05
2023-04-26 17:31:25
2023-04-26 17:27:32
2023-04-25 19:57:58
2023-04-25 19:53:11
2023-04-25 19:49:11
2023-04-25 19:41:54