一個完整的項目示例:taro開發微信小程序

前一周完成了一個項目,體測成績轉換的工具,沒做記錄,。這次計劃開發一個地圖應用小程序,記錄一下。方便給使用的人。

一、申請微信小程序,填寫相應的信息,取得開發者ID。這個要給騰訊地圖使用的。

二、申請騰訊地圖API,創建應用,個人版,6500次調用 。并發5.也還行吧。

好了,我們開始。

三、新建一個文件夾,我的是win系統。

放在如下位置。D:\gitee\wechat-map

在目錄處:cmd

四、創建環境相關。

我使用的是react+taro等,因為工程量小,不再搞復雜了。

參考 :安裝及使用 | Taro 文檔

看操作記錄:

npm install -g @tarojs/cli

taro init wechat-map

cd wechat-map

pnpm install?

五、 打開vscode,編譯一下。

退出當前用戶,重新登錄一個用戶。你懂的。

打開terminal,pnpm dev:weapp

我用的是taro 3.6.37,可能有點低,再說吧。

六,打開微信開發者工具。

直接導入項目即可,找到目錄。其他自動生成。

注意清緩存,編譯。

?

?七、正式開始吧,來個首頁

/** @Author: DuYicheng* @Date: 2025-05-13 08:49:34* @LastEditors: DuYicheng* @LastEditTime: 2025-05-13 09:57:00* @Description: * @FilePath: \wechat-map\src\pages\index\index.tsx*/
import { View, Text, Image } from '@tarojs/components'
import { useLoad } from '@tarojs/taro'
import './index.scss'export default function Index() {useLoad(() => {console.log('Page loaded.')})return (<View className='index'><View className='logo-container'><ImageclassName='medical-logo'src='../../assets/images/medical-logo.png'mode='aspectFit'/><Text className='title'>醫療服務</Text></View><View className='button-container'><View className='find-button clinic'>找診所</View><View className='find-button pharmacy'>找藥店</View></View></View>)
}
.index {display: flex;flex-direction: column;align-items: center;padding: 40px 20px;
}.logo-container {display: flex;flex-direction: column;align-items: center;margin-bottom: 60px;.medical-logo {width: 120px;height: 120px;margin-bottom: 20px;}.title {font-size: 24px;color: #333;}
}.button-container {width: 100%;display: flex;flex-direction: column;gap: 20px;padding: 0 40px; // 添加內邊距使按鈕更窄
}.find-button {width: 100%;height: 80px; // 增加按鈕高度display: flex;align-items: center;justify-content: center;border-radius: 8px;font-size: 18px;color: #fff;&.clinic {background-color: #2D7DD2;}&.pharmacy {background-color: #45B649;}
}

八、小程序sdk配置。

九、實現按鈕的跳轉。

?先實現診所功能。

1.結構圖

src/├── assets/├── pages/│   ├── index/│   └── clinic-map/│       ├── index.tsx│       ├── index.scss│       └── index.config.ts└── utils/└── qqmap-wx-jssdk.js

2.主頁面調整代碼如:

import { View, Text, Image } from '@tarojs/components'
import { useLoad, navigateTo } from '@tarojs/taro'
import './index.scss'export default function Index() {useLoad(() => {console.log('Page loaded.')})const handleFindClinic = () => {navigateTo({url: '/pages/clinic-map/index'})}return (<View className='index'><View className='logo-container'><ImageclassName='medical-logo'src='../../assets/medical-logo.png'mode='aspectFit'/><Text className='title'>醫療服務</Text></View><View className='button-container'><View className='find-button clinic' onClick={handleFindClinic}>找診所</View><View className='find-button pharmacy'>找藥店</View></View></View>)
}

3.診所地圖

import { View, Map } from '@tarojs/components'
import Taro, { useLoad } from '@tarojs/taro'
import { useState } from 'react'
import './index.scss'const QQMapWX = require('../../utils/qqmap-wx-jssdk.js')
let qqmapsdkexport default function ClinicMap() {const [latitude, setLatitude] = useState(0)const [longitude, setLongitude] = useState(0)const [clinics, setClinics] = useState([])useLoad(() => {// 初始化地圖SDKqqmapsdk = new QQMapWX({key: 'YOUR_KEY_HERE' // 替換成你的騰訊地圖key})// 獲取當前位置權限Taro.getLocation({type: 'gcj02',success: function(res) {setLatitude(res.latitude)setLongitude(res.longitude)searchNearbyClinic(res.latitude, res.longitude)},fail: function() {Taro.showToast({title: '需要授權位置信息',icon: 'none'})}})})const searchNearbyClinic = (lat, lng) => {qqmapsdk.search({keyword: '診所',location: `${lat},${lng}`,success: function(res) {console.log(res)setClinics(res.data)},fail: function(res) {console.error(res)Taro.showToast({title: '搜索診所失敗',icon: 'none'})}})}return (<View className='clinic-map'><MapclassName='map'latitude={latitude}longitude={longitude}markers={clinics.map((clinic, index) => ({id: index,latitude: clinic.location.lat,longitude: clinic.location.lng,title: clinic.title}))}show-location/><View className='clinic-list'>{clinics.map((clinic, index) => (<View key={index} className='clinic-item'><View className='clinic-name'>{clinic.title}</View><View className='clinic-address'>{clinic.address}</View><View className='clinic-distance'>{clinic._distance}米</View></View>))}</View></View>)
}

4.地圖樣式

.clinic-map {height: 100vh;display: flex;flex-direction: column;.map {width: 100%;height: 50vh;}.clinic-list {flex: 1;overflow-y: auto;padding: 10px;background: #f5f5f5;.clinic-item {background: #fff;margin-bottom: 10px;padding: 15px;border-radius: 8px;.clinic-name {font-size: 16px;font-weight: bold;color: #333;margin-bottom: 5px;}.clinic-address {font-size: 14px;color: #666;margin-bottom: 5px;}.clinic-distance {font-size: 12px;color: #999;}}}
}

5.創建頁面配置

export default {navigationBarTitleText: '找診所',navigationBarBackgroundColor: '#ffffff',navigationBarTextStyle: 'black'
}

6.修改:app.config.ts

export default defineAppConfig({pages: ['pages/index/index','pages/clinic-map/index'],window: {backgroundTextStyle: 'light',navigationBarBackgroundColor: '#fff',navigationBarTitleText: 'WeChat',navigationBarTextStyle: 'black'},permission: {'scope.userLocation': {desc: '你的位置信息將用于小程序位置接口的效果展示'}}
})

7.修改project.config.json

{// ...existing code..."permission": {"scope.userLocation": {"desc": "你的位置信息將用于小程序位置接口的效果展示"}}// ...existing code...
}

其他建議:

建議在開發者工具的詳情設置中,確保以下設置:

  1. 勾選"使用增強編譯"
  2. 勾選"不校驗合法域名"(開發階段)
  3. 確保在"API 權限設置"中已經開啟了位置相關接口權限

?

測試成功,但過了一會,說用量多了。vscode,重新編譯。

?

?基本可以了,下一步就可以上傳代碼等待審核了。以上是一個簡單的教程,你可以根據實際修改。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81486.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動態規劃-LCR 166.珠寶的最大價值-力扣(LeetCode)

一、題目解析 frame二維矩陣中每個值代表珠寶的價值&#xff0c;現在從左上角開始拿珠寶&#xff0c;只能向右或向下拿珠寶&#xff0c;到達右下角時停止拿珠寶&#xff0c;要求拿的珠寶價值最大。 二、算法解析 1.狀態表示 我們想要知道的是到達[i,j]為位置時的最大價值&am…

安裝nerdctl和buildkitd腳本命令

#!/bin/bash set -euo pipefail # 檢查是否以root權限運行 if [ "$(id -u)" -ne 0 ]; then echo "錯誤&#xff1a;請使用root權限或sudo運行本腳本" >&2 exit 1 fi # 檢測openEuler系統&#xff08;兼容大小寫&#xff09; detect_distrib…

實現視頻分片上傳 OSS

訪問 OSS 有兩種方式&#xff0c;本文用到的是使用臨時訪問憑證上傳到 OSS&#xff0c;不同語言版本的代碼參考&#xff1a; 使用STS臨時訪問憑證訪問OSS_對象存儲(OSS)-阿里云幫助中心 1.安裝并使用 首先我們要安裝 OSS&#xff1a; npm install ali-oss --save 接著我們…

動態規劃(3)學習方法論:構建思維模型

引言 動態規劃是算法領域中一個強大而優雅的解題方法,但對于許多學習者來說,它也是最難以掌握的算法范式之一。與貪心算法或分治法等直觀的算法相比,動態規劃往往需要更抽象的思維和更系統的學習方法。在前兩篇文章中,我們介紹了動態規劃的基礎概念、原理以及問題建模與狀…

elementplus el-tree 二次封裝支持配置刪除后展示展開或折疊編輯復選框懶加載功能

本文介紹了基于 ElementPlus 的 el-tree 組件進行二次封裝的 TreeView 組件&#xff0c;使用 Vue3 和 JavaScript 實現。TreeView 組件通過 props 接收樹形數據、配置項等&#xff0c;支持懶加載、節點展開/收起、節點點擊、刪除、編輯等操作。組件內部通過 ref 管理樹實例&…

2025年滲透測試面試題總結-安恒[實習]安全工程師(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 安恒[實習]安全工程師 一面 1. 自我介紹 2. 前兩段實習做了些什么 3. 中等難度的算法題 4. Java的C…

網絡編程中的直接內存與零拷貝

本篇文章會介紹 JDK 與 Linux 網絡編程中的直接內存與零拷貝的相關知識&#xff0c;最后還會介紹一下 Linux 系統與 JDK 對網絡通信的實現。 1、直接內存 所有的網絡通信和應用程序中&#xff08;任何語言&#xff09;&#xff0c;每個 TCP Socket 的內核中都有一個發送緩沖區…

TransmittableThreadLocal使用場景

&#x1f680; 為什么要用 TransmittableThreadLocal&#xff1f;一文讀懂線程上下文傳遞問題 在 Java Web 開發中&#xff0c;我們經常用 ThreadLocal 來保存每個請求的用戶信息&#xff0c;例如 userId。但當我們使用線程池或異步方法&#xff08;如 Async&#xff09;時&am…

Milvus(24):全文搜索、文本匹配

1 全文搜索 全文搜索是一種在文本數據集中檢索包含特定術語或短語的文檔&#xff0c;然后根據相關性對結果進行排序的功能。該功能克服了語義搜索的局限性&#xff08;語義搜索可能會忽略精確的術語&#xff09;&#xff0c;確保您獲得最準確且與上下文最相關的結果。此外&…

2000 元以下罕見的真三色光源投影儀:雷克賽恩Cyber Pro1重新定義入門級投影體驗

當性價比遇上技術瓶頸 在 2000元以下的1080P投影儀&#xff0c;單LCD 技術長期主導。而三色光源的DLP和3LCD真1080P都在4000元以上。 單LCD投影為純白光光源&#xff0c;依賴CF濾光膜導致光效低下&#xff0c;普遍存在" 色彩失真 " 等問題。數據顯示&#xff0c;該價…

Maven 下載安裝與配置教程

## 1. Maven 簡介 Maven 是一個項目管理和構建自動化工具&#xff0c;主要用于 Java 項目。Maven 可以幫助開發者管理項目的構建、報告和文檔&#xff0c;簡化項目依賴管理。 ## 2. 下載 Maven 1. 訪問 Maven 官方網站 [https://maven.apache.org/download.cgi](https://maven.…

C# 深入理解類(從類的外部訪問靜態成員)

從類的外部訪問靜態成員 在前一章中&#xff0c;我們看到使用點運算符可以從類的外部訪問public實例成員。點運算符由實 例名、點和成員名組成。 就像實例成員&#xff0c;靜態成員也可以使用點運算符從類的外部訪問。但因為沒有實例&#xff0c;所以最常 用的訪問靜態成員的方…

Java在微服務架構中的最佳實踐:從設計到部署

在2025年的云計算和分布式系統時代&#xff0c;微服務架構已成為構建高可擴展、高可用系統的標準方法&#xff0c;廣泛應用于電商、金融和物聯網等領域。Java憑借其成熟的生態系統、強大的并發支持和跨平臺能力&#xff0c;是微服務開發的首選語言。例如&#xff0c;我們的訂單…

文件讀取漏洞路徑與防御總結

文件讀取漏洞路徑與防御總結 文件讀取漏洞允許攻擊者通過路徑遍歷等手段訪問未授權的文件。以下是Linux和Windows系統中常見敏感路徑的歸納及防御建議&#xff1a; Linux 系統常見敏感路徑 系統關鍵文件&#xff1a; /etc/passwd&#xff1a;用戶賬戶信息&#xff08;可被用來…

react-router基本寫法

1. 創建項目并安裝所有依賴 npx create-react-app react-router-pro npm i 2. 安裝所有的 react router 包 npm i react-router-dom 3. 啟動項目 npm run start router/index.js // 創建路由實例 綁定path elementimport Layout from "/pages/Layout"; import…

uni-app 開發HarmonyOS的鴻蒙影視項目分享:從實戰案例到開源后臺

最近&#xff0c;HBuilderX 新版本發布&#xff0c;帶來了令人興奮的消息——uni-app 現在支持 Harmony Next 平臺的 App 開發。這對于開發者來說無疑是一個巨大的福音&#xff0c;意味著使用熟悉的 Vue 3 語法和開發框架&#xff0c;就可以為鴻蒙生態貢獻自己的力量。 前言 作…

純css實現蜂窩效果

<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>蜂窩效果</title><style>body {margin: 0…

JAVA EE_HTTP

為什么意氣風發的少年&#xff0c;總是聽不進去別人的勸解。 ??????? ??????? ----------陳長生. ?主頁&#xff1a;陳長生.-CSDN博客? &#x1f4d5;上一篇&#xff1a;JAVA EE_網絡原理_數據鏈路層-CSDN博客 1.HTTP 1.1.HTTP是什么 H…

存儲扇區分配表:NAND Flash與SD NAND(貼片式SD卡)的架構差異

NAND Flash 和 SD 卡&#xff08;SD NAND&#xff09;的存儲扇區分配表在原理上有相似之處&#xff0c;但由于二者的結構和應用場景不同&#xff0c;也存在一些差異。 相同點&#xff1a; 基本功能&#xff1a;NAND Flash 和 SD 卡&#xff08;SD NAND&#xff09;的存儲扇區分…

界面控件DevExpress WinForms中文教程:Banded Grid View - API

DevExpress WinForms擁有180組件和UI庫&#xff0c;能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序&#xff0c;無論是Office風格的界面&#xff0c;還是分析處理大批量的業務數據&#xff0c;它都能輕松勝…