当前位置: 首页 > news >正文

宁波自适应网站建设百度助手官网

宁波自适应网站建设,百度助手官网,社交电商怎么入手,wordpress友情链接设置基于React-Native做位置信息获取 在这个里面最重要的是两个部分&#xff0c;一个是位置定位的权限获取&#xff0c;一个是实时位置的监听&#xff0c;在安卓项目中&#xff0c;在 android/app/src/main/AndroidManifest.xml该文件下&#xff0c;在< manifest > 标签内写…

基于React-Native做位置信息获取

在这个里面最重要的是两个部分,一个是位置定位的权限获取,一个是实时位置的监听,在安卓项目中,在

android/app/src/main/AndroidManifest.xml

该文件下,在< manifest > 标签内写入以下权限

    <!--用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!--用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.INTERNET" />

获取当前位置信息,在React-Native项目中,我使用的WebView来做地图渲染,基于openlayer提前将vue3+vite工程构建好,将打包的项目放置在

android/app/src/main/assets/GIS

在React-Native页面内代码如下

import React, {useEffect, useRef, useState} from 'react';
import {View, StyleSheet, PermissionsAndroid, Alert} from 'react-native';
import Geolocation from '@react-native-community/geolocation';
import {WebView} from 'react-native-webview';
import {useFocusEffect} from '@react-navigation/native';
// 获取设备地理位置
let watchId;
const MyWebView = () => {const [error, setError] = useState(null);const webViewRef = useRef(null);// 请求位置权限const requestLocationPermission = async () => {try {const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,{title: 'Location Permission',message: 'App needs access to your location.',buttonPositive: 'OK',},);if (granted === PermissionsAndroid.RESULTS.GRANTED) {console.log('Location permission granted');// 用户已授予位置权限,开始获取地理位置getDeviceLocation();// startLocationWatch(); // 调用开始位置监视函数} else {console.log('Location permission denied');// 处理权限被拒绝的情况Alert.alert('Location Permission Denied','Please enable location services to use this feature.',);}} catch (err) {console.warn(err);}};const getDeviceLocation = () => {watchId = Geolocation.watchPosition(position => {const {latitude, longitude, heading} = position.coords;// 向 WebView 发送位置数据,但只有在WebView加载完成后才发送// if (webViewLoaded) {const locationData = JSON.stringify({longitude, latitude, heading});// webViewRef.current.injectJavaScript(jsCode);webViewRef.current?.injectJavaScript(`function toChangeLocation(){window.currentLocation = '${locationData}';// 手动触发位置变化事件,通知监听器const event = new Event('currentLocationChanged');event.detail = window.currentLocation; // 通过事件的 detail 属性传递新的位置信息window.dispatchEvent(event);}setInterval(()=>{toChangeLocation()},500)`); },error => {setError(error.message);},{enableHighAccuracy: true,timeout: 20000,maximumAge: 1000,accuracy: {android: 'high',ios: 'best',},distanceFilter: -1,interval: 1000,},);return () => {Geolocation.clearWatch(watchId);watchId = undefined;};};// 在屏幕聚焦时执行useFocusEffect(React.useCallback(() => {watchId && Geolocation.clearWatch(watchId);watchId = undefined;requestLocationPermission();getDeviceLocation();return () => {clearLocationWatch();};}, []),);// 清除位置监视const clearLocationWatch = () => {watchId && Geolocation.clearWatch(watchId);};return (<View style={styles.container}><WebViewref={webViewRef}source={{uri: 'file:///android_asset/GIS/index.html'}} // 这里的路径应该指向你的Vue.js项目的index.html文件// source={{uri: `http://192.168.87.184:5173`}} // 要加载的外部链接地址style={styles.webview}javaScriptEnabled={true}scalesPageToFit={true}mixedContentMode="always"useWebKit={true}startInLoadingState={true}/></View>);
};const styles = StyleSheet.create({container: {flex: 1,},webview: {flex: 1,},
});export default MyWebView;

模拟器内更改位置是立即执行的,但是到手机里面就只执行一次了,所以我给了interval,具体原因位置,另外本来项目与webview通信应该用postmessage通信,但是打完包后,挂在window下的function拿不到,具体原因还不清楚,所以只能在项目中强制监听了,然后在html中自己写事件去触发自己,在项目中

  window.addEventListener('currentLocationChanged', (event) => {let newLocation = event.detail; // 获取新的位置信息updateMapLocation(newLocation); // 调用更新地图位置的函数if(firstLocate){firstLocate=falselocateToCurrent()} });
http://www.yayakq.cn/news/513781/

相关文章:

  • 重庆网站建设总结与体会龙岩新罗区
  • 把别人的图片拿来做网站凡科互动官网登录入口官方
  • 小型的做网站公司从哪里接的项目新闻发布会筹备方案
  • mysql 注册网站南阳做网站哪家好
  • 搭建asp虚拟主机网站wordpress主题 反盗版
  • 公司想制作网站重庆网站公司制作价格
  • 网站设计中 查询怎么做建站行业严重产能过剩
  • 自己怎么建立个人网站企业宣传片策划方案
  • 美工做任务网站东城东莞网站建设
  • 有什么做vi设计的网站个旧市建设网站
  • 更换网站程序无做弊的棋牌游戏网站
  • 网站建设的价值是什么网站建设哪里接活
  • 建设视频网站费用吗企业微信平台
  • 网站设计与网页制作wordpress写文章分段
  • js素材网站网站建设办什么手续
  • 婚恋网站开发平台代理招商小程序制作报价
  • 用什么软件上传网站wordpress index.html
  • 网站专业制作揭阳市seo点击排名软件价格
  • 做网站界面需要注意什么网络免费推广平台
  • 如何用wordpress做视频网站个人博客网站教程
  • 双线主机可以做彩票网站吗站酷网如何接单
  • 网站建议方案北京网站设计多少钱
  • wordpress网站内容朋友圈推广平台
  • 最专业网站建设公司网络营销推广部做什么
  • 高明网站设计公司如何建设一个收费的影视图文网站
  • 宣传册制作网站恋爱话术小程序搭建
  • 网站整站下载器 全站克隆页面图片视频下载 仿站专用源码工具软件网站托管维护方案
  • 阿里云网站备案网站建设方案书红豆影视传媒有限公司
  • 亚马逊代运营临沂网站seo
  • 伊宁网站建设wordpress菜单不能打开