android Google Map定位及创建画布标示坐标点

微信小程序 - 腾讯地图使用和选点连线计算距离 GitHub Demo 地址: jh-weapp-demo 实现一些常用效果、封装通用组件和工具类 小程序码 阅读详情

最近公司做了一个关于android手机打车的应用,主要功能都在地图上了,正好研究了一下,总结了些技术点,基本都是网上翻得,加上了自己的理解。废话不多说,上码!


GPS状态监听:

package com.map;

import java.util.Iterator;

import com.dlvct.sns.socket.LogicServer;
import com.dlvct.sns.socket.clientpackets.CM_PLAYER_UP_DOWN_REQUEST;
import com.dlvct.sns.socket.model.MapInfo;

import android.content.Context;
import android.location.GpsSatellite;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;

/**
 * GPS
 * 
 * GPS相关设置及位置取得等
 * 
 * @author 
 */
public class GPS implements LocationListener{

	private Context context;
	private Handler mHandler;
    Location currentLocation ;
	LocationManager locationManager;
//    private GpsStatus gpsstatus;
	
	/**
	 * 机能说明:构造函数
	 * 
	 * @param IN
	 *            Context
	 * @param OUT
	 * 
	 */
	public GPS(Context appContext,Handler mHandler,LocationManager locationManager,Location currentLocation) {
		this.context = appContext;
		this.mHandler = mHandler;
		this.locationManager = locationManager;
		this.currentLocation = currentLocation;
	}
	
	
	
    //位置变化时触发   
	@Override
	public void onLocationChanged(Location location) {
//		Toast.makeText(context, "location.getProvider():"+location.getProvider(), Toast.LENGTH_SHORT).show();
		Log.v("GPSTEST", "Got New Location of provider:"+location.getProvider());
		
		if(currentLocation!=null){
			if(isBetterLocation(location, currentLocation)){  

                Log.v("GPSTEST", "It's a better location");  

                this.currentLocation= location; 

                showLocation(location);
                
			} else {  

                Log.v("GPSTEST", "Not very good!");  

            } 

		} else{  

            Log.v("GPSTEST", "It's first location");  

            this.currentLocation=location;  

            showLocation(location);

        } 
		
		MapInfo.getInstance().setLoc(location.getLongitude(), location.getLatitude());
		
		LogicServer.logicServerConn.sendPacket(new CM_PLAYER_UP_DOWN_REQUEST(), mHandler);

		//移除基于LocationManager.NETWORK_PROVIDER的监听器  

        if(LocationManager.NETWORK_PROVIDER.equals(location.getProvider())){  

            locationManager.removeUpdates(this);  

        }  
//
//        MapInfo.getInstance().setLoc(location.getLongitude(), location.getLatitude());
//
//        LogicServer.logicServerConn.sendPacket(new CM_PLAYER_UP_DOWN_REQUEST(), mHandler);
		
	}
	//gps禁用时触发 
	@Override
	public void onProviderDisabled(String provider) {
		Log.d("Location", "onProviderDisabled");
		//这里可以执行提醒用户开启GPS操作
        Toast.makeText(context, "请开启GPS!", Toast.LENGTH_SHORT).show();
	}
	//gps开启时触发
	@Override
	public void onProviderEnabled(String provider) {
		Log.d("Location", "onProviderEnabled");
		//这里可以提醒用户GPS已经正常开启
		
	}

	//gps状态变化时触发  
	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		Log.d("Location", "onStatusChanged");
		if(status==LocationProvider.AVAILABLE){     
			Log.e(null, "当前GPS状态:可见的");
        }else if(status==LocationProvider.OUT_OF_SERVICE){     
			Log.e(null, "当前GPS状态:服务区外");
        }else if(status==LocationProvider.TEMPORARILY_UNAVAILABLE){  
			Log.e(null, "当前GPS状态:暂停服务");       
        } 
		
	}
	
	private void showLocation(Location location){  

	    //纬度  

	    Log.v("GPSTEST","Latitude:"+location.getLatitude());  

	    //经度  

	    Log.v("GPSTEST","Longitude:"+location.getLongitude());  

	    //精确度  

	    Log.v("GPSTEST","Accuracy:"+location.getAccuracy());  

	    //Location还有其它属性,请自行探索  

	}


	
	public void removeListener(){
		locationManager.removeUpdates(this);
	}
	
	
	
    private static final int CHECK_INTERVAL = 1000 * 30;  
    /**
     * 判断获取的位置是否更好
     * @author Administrator
     */
    protected boolean isBetterLocation(Location location,  

            Location currentBestLocation) {  

        if (currentBestLocation == null) {  

            // A new location is always better than no location  

            return true;  

        }  

        // Check whether the new location fix is newer or older  

        long timeDelta = location.getTime() - currentBestLocation.getTime();  

        boolean isSignificantlyNewer = timeDelta > CHECK_INTERVAL;  

        boolean isSignificantlyOlder = timeDelta < -CHECK_INTERVAL;  

        boolean isNewer = timeDelta > 0;  

        // If it's been more than two minutes since the current location,  

        // use the new location  

        // because the user has likely moved  

        if (isSignificantlyNewer) {  

            return true;  

            // If the new location is more than two minutes older, it must  

            // be worse  

        } else if (isSignificantlyOlder) {  

            return false;  

        }  

        // Check whether the new location fix is more or less accurate  

        int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation  

                .getAccuracy());  

        boolean isLessAccurate = accuracyDelta > 0;  

        boolean isMoreAccurate = accuracyDelta < 0;  

        boolean isSignificantlyLessAccurate = accuracyDelta > 200;  

        // Check if the old and new location are from the same provider  

        boolean isFromSameProvider = isSameProvider(location.getProvider(),  

                currentBestLocation.getProvider());  

        // Determine location quality using a combination of timeliness and  

        // accuracy  

        if (isMoreAccurate) {  

            return true;  

        } else if (isNewer && !isLessAccurate) {  

            return true;  

        } else if (isNewer && !isSignificantlyLessAccurate  

                && isFromSameProvider) {  

            return true;  

        }  

        return false;  

    }  

    /** Checks whether two providers are the same */  

    private boolean isSameProvider(String provider1, String provider2) {  

        if (provider1 == null) {  

            return provider2 == null;  

        }  

        return provider1.equals(provider2);  

    } 


//  private GpsStatus.Listener gpsListener = new GpsStatus.Listener(){
//
//		@Override
//		public void onGpsStatusChanged(int event) {
//			//获取当前状态             
//			gpsstatus=locationManager.getGpsStatus(null);
//			
//			switch(event){
//			//第一次定位时的事件                 
//			case GpsStatus.GPS_EVENT_FIRST_FIX:
//				Log.e("Location", "第一次定位时的事件"); 
//				break;
//				//开始定位的事件                 
//			case GpsStatus.GPS_EVENT_STARTED:
//				Log.e("Location", "开始定位的事件"); 
//				break;
//			//发送GPS卫星状态事件                  
//			case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
//				Log.e("Location", "发送GPS卫星状态事件"); 
//				
//				//获取卫星颗数的默认最大值
//				int count1 = gpsstatus.getMaxSatellites();
//				Log.e(null, "卫星列表的最大卫星数:"+count1);
//				//创建一个迭代器保存所有卫星 
////				Iterable<GpsSatellite> allSatellites = gpsstatus.getSatellites();  
////				Iterator<GpsSatellite> it = allSatellites.iterator(); 
//				
////				int count = 0;
////				while(it.hasNext() && count <= maxSatellites){
////					Log.e(null, "while count:"+count);
////					count++;
////				}
////				Toast.makeText(context, "Satellite Count:" + count, Toast.LENGTH_SHORT).show();
////				Log.e("Satellite Count:", "count:"+count); 
//				break;
//			//停止定位事件 
//			case GpsStatus.GPS_EVENT_STOPPED: 
//				Log.e("Location", "停止定位事件 "); 
//				break;
//			}
//		}
//  };
//  
    
    
	/**
	 * 机能说明:判断GPS是否开启
	 * 
	 * @param IN
	 * @param OUT 
	 * 
	 */
	public boolean openGPSSettings() {
		LocationManager alm = (LocationManager) context
				.getSystemService(Context.LOCATION_SERVICE);
		if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
			return true;
		} else {
			return false;
		}
	}
}


activity继承MapActivity 并创建监听,调用GPS:

	//位置信息
	Location currentLocation ;
	//位置服务
	private LocationManager locationManager;
	//GPS监听
	private LocationListener gpsListener=null;  
	//network监听
    private LocationListener networkListner=null;  

	public void getLocation() {
		/* 获取位置管理服务 */
		
		String serviceName = Context.LOCATION_SERVICE;
		locationManager = (LocationManager) this.getSystemService(serviceName);
		registerLocationListener();
		
	}


    /**
     * 以下是开始监听:同时开启两个监听
     * @author Administrator
     */
    private void registerLocationListener(){  

        networkListner=new GPS(MapControllerActivity.this,mHandler,locationManager,currentLocation);  

        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, networkListner);  

        gpsListener=new GPS(MapControllerActivity.this,mHandler,locationManager,currentLocation); 

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000*10, 0, gpsListener);  

    }  
	
以上代码就是GPS定位了,包括network和GPS定位,network定位后将监听销毁,保留GPS监听。

下一步就是讲获得的经纬度以画布的形式画到地图上显示。

package com.map;

import java.util.*;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;

import com.dlvct.sns.R;
import com.google.android.maps.*;


/**
 * 位置表示
 * 
 * 地图上显示位置PIN等信息
 *
 * @author 
 */
public class PlaceOverlay extends ItemizedOverlay<OverlayItem> implements GestureDetector.OnGestureListener  {
	
	private List<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
	private Context context;
	public static Boolean longDown=false;
	public static float lat;
	public static float lon;
	
	GeoPoint point;
	MapView mapView;
	/**
	 * 构造方法
	 * 机能说明:地图上描绘PIN
	 * 
	 * @param IN
	 *           Drawable
	 * @param OUT 
	 * 
	 */
	public PlaceOverlay(Drawable defaultMarker,Context context) {
		super(boundCenterBottom(defaultMarker));
		this.context = context;
	}
	
	/**
	 * 机能说明:追加PIN
	 * 
	 * @param IN
	 *           OverlayItem
	 * @param OUT 
	 * 
	 */
	public void addOverlay(OverlayItem overlay) {
		mOverlays.add(overlay);
		populate();
	}
	
	/**
	 * 机能说明:移除PIN
	 * 
	 * @param IN
	 * @param OUT 
	 * 
	 */
	public void removeAllOverlay() {
		mOverlays.clear();
		populate();
	}
	
	/**
	 * 机能说明:创建项目
	 * 
	 * @param IN
	 * @param OUT 
	 * 
	 */
	@Override
	protected OverlayItem createItem(int i) {
		return mOverlays.get(i);
	}

	/**
	 * 机能说明:取得PIN个数
	 * 
	 * @param IN
	 * @param OUT 
	 * 
	 */
	@Override
	public int size() {
		return mOverlays.size();
		
	}

	
	/**
	 * 机能说明:点击PIN
	 * 
	 * @param IN
	 * @param OUT 
	 * 
	 */
	@Override
	public boolean onTap(int index) {
		setFocus(mOverlays.get(index));
		Log.e(null, "点击图标编号:"+index);
		return super.onTap(index);
	}
	
	
	/**
	 * 点击地图任意点获取经纬度
	 */
	@Override
	public boolean onTap(GeoPoint point, MapView mapView) {
		//p获取的经纬度数据是整型变量,需要转换为float类型
		lat=point.getLatitudeE6();
		lon=point.getLongitudeE6();
		if(longDown==true){
			this.point=point;
			this.mapView=mapView;
			List<Overlay> mapOverlays = mapView.getOverlays();
			Log.e(null, "mapOverlays的长度:"+mapOverlays.size());
			if(mapOverlays.size()>1){
				mapOverlays.remove(1);
			}
			if(mapOverlays.size()==1){
				Log.e(null, "mapOverlays的长度2:"+mapOverlays.size());
				Drawable drawable = context.getResources().getDrawable(R.drawable.pin_red);
				//创建画布,将图标画到画布上
				PlaceOverlay overlay = new PlaceOverlay(drawable,context);
				/* 创建标记 */
				OverlayItem overlayItem = new OverlayItem(point, "标记title","标记摘要");
				overlay.addOverlay(overlayItem); 
				mapOverlays.add(overlay);
				Log.e(null, "what?????!");
			}
			
		}
		//将当前的经纬度显示出来
		Log.e(null, "lat:"+lat);
		Log.e(null, "lon:"+lon);
//		return super.onTap(point, mapView);
		return false;
	}
	
	
	@Override
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		// TODO Auto-generated method stub
		super.draw(canvas, mapView, shadow);
	}
	
	
	
	
   private void DeleteOnClick() {
        // 创建AlertDialog.Builder对象
        AlertDialog.Builder builder = new AlertDialog.Builder(
                context);
        // alert绑定图标
        builder.setIcon(R.drawable.icon);
        // 表头
        builder.setTitle(R.string.Common_GpsOpen);
        builder.setMessage("");
        // 同意按钮
        builder.setPositiveButton(R.string.Button_OK, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
            	List<Overlay> mapOverlays = mapView.getOverlays();
    			if(mapOverlays.size()>1){
    	        	mapOverlays.remove(1);
    	        }
    			Drawable drawable = context.getResources().getDrawable(R.drawable.pin_red);
    			//创建画布,将图标画到画布上
    	        PlaceOverlay overlay = new PlaceOverlay(drawable,context);
    	        /* 创建标记 */
    	        OverlayItem overlayItem = new OverlayItem(point, "标记title","标记摘要");
    	        overlay.addOverlay(overlayItem); 
    	        mapOverlays.add(overlay);
                // 关闭提示框
                dialog.dismiss();
            }
        });
        // 取消按钮
        builder.setNegativeButton(R.string.Button_cancel, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();
            }
        });
        builder.create().show();
    }

	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		return true;
	}
	
	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		// TODO Auto-generated method stub
		return true;
	}
	
	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		Log.e(null, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
		
	}
	
	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		return false;
	}
	
	@Override
	public void onShowPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}
	
}





Android集成Google Maps实现真实道路导航路线绘制 在移动开发中,‘两点间路线绘制’常被误解为简单几何绘图,实则涉及地理坐标系统、道路拓扑建模与动态路径渲染等核心概念。其原理基于调用专业路线规划服务(如Google Directions API)获取带转向指令与真实道路走向的经纬度序列,再经坐标解码、屏幕适配、图层叠加等步骤完成高保真渲染。该技术具备精准定位、交互响应、缩放自适应等工程价值,广泛应用于物流调度、本地生活、出行服务等场景。本文聚焦 Android 平台下 Google Maps SDK 与 Directions API 的协同实践,深入解析 P 阅读详情

相关推荐

Android+Spring Boot校园导览APP开发:从定位到路线规划的完整实践

移动应用开发中,定位与地图服务是构建LBS(基于位置的服务)应用的核心基础。其原理是通过集成设备GPS、网络或传感器数据,结合地图SDK提供的坐标转换与渲染能力,实现用户位置的实时获取与可视化。这项技术的工程价值在于能够将抽象的坐标数据转化为直观的导航与信息服务,极大地提升了用户在陌生环境中的空间感知与行动效率。典型的应用场景包括出行导航、周边信息查询以及区域内的设施导览。本文聚焦于校园导览这一具体场景,详细阐述了如何利用Android原生开发与Spring Boot后端服务,整合高德地图SDK实现精准定位

weixin_30321449的博客 353

微信小程序map组件

记录一下在使用map组件的时候所遇到的问题 1.map组件中的show-location方法获取的定位点和,getLocation方法所获取的定位点不一致。 在map组件中有一个show-location属性,设置为true,就会显示一个绿色的当前位置的点。 使用getLocation获取当前位置,在markers中标记之后也可以获取当前位置的点 但是一开始两个点不一致。 后来查询之后发现是两个方法所用的坐标系不一致,将getLocation中的type设置为国测局坐标// GPS坐标系 // type:

weixin_41544335的博客 3434

Unity AR Foundation入门:30分钟实现AR平面检测与物体放置

增强现实(AR)技术通过计算机视觉与传感器融合,将虚拟信息叠加到真实世界,其核心原理在于环境感知与虚实融合。在移动开发领域,AR Foundation作为Unity的跨平台AR框架,封装了ARKit与ARCore的底层接口,为开发者提供了统一的API,极大降低了AR应用开发门槛。其技术价值在于实现了“一次开发,多端部署”,并能通过SLAM(即时定位与地图构建)技术实时理解环境几何结构。典型的应用场景包括产品展示、教育互动与游戏体验。本文以AR Foundation为核心工具,结合平面检测与射线投射技术,手把

weixin_30251829的博客 339

小程序map组件的show-location

小程序map组件的show-location 关于小程序map组件的show-location属性想必使用过map组件的人都知道,map组件的show-location的属性值不管true还是false都不会显示在地图上,其实在show-location为true的时候是会显示的,只是因为map组件的scale的原因,地图显示不出来,所以我们需要用到用的微信自带的api来曲线完成显示我们的当前位置...

weixin_42123532的博客 9763

战地边缘AI:轻量级机器学习在断网断电人道救援中的实战落地

边缘AI是指将模型推理能力下沉至终端设备,绕过云端依赖,在带宽受限、电力不稳、算力薄弱的极端环境下实现自主决策。其核心原理是模型压缩、硬件适配与数据降维,技术价值在于提升系统可用性、鲁棒性与部署敏捷性。典型应用场景包括灾害响应、战区人道援助、野外科考等弱连接环境。本文聚焦真实乌克兰前线部署案例,详解如何用37MB轻量模型、纯CPU推理、手机级输入(倾斜航拍图/GPS坐标)完成建筑安全分级、动态避难路径规划与炮击热力图生成——关键突破在于LightCNN-3网络设计、相对地标锚定定位法及OSINT驱动的无历史

weixin_33922670的博客 398

别再傻傻分不清了!WebGIS开发必懂的WGS84、GCJ02、BD09坐标系实战避坑指南

本文深入解析WebGIS开发中WGS84、GCJ02、BD09三大坐标系的核心差异与实战应用,提供从原理到避坑的完整指南。通过JavaScript和Python代码示例,展示如何在不同地图平台间精确转换坐标,解决常见的位置偏移问题,帮助开发者提升WebGIS应用的定位精度和用户体验。

weixin_30788619的博客 441

【备忘录】uni-app的地图相关组件操作,uni-app接入腾讯地图API的具体实现

uni-app接入腾讯地图API的可行解决方案

Xcong_Zhu的博客 5697

Mapbox Unity SDK实战:地理空间数据与虚拟世界的融合开发指南

地理信息系统(GIS)与游戏引擎的融合,正成为连接数字孪生与沉浸式体验的关键技术。其核心原理在于将真实世界的经纬度、高程、矢量要素等地理空间数据,通过坐标转换与流式加载技术,实时转换为游戏引擎可识别的三维模型与纹理。这一过程的技术价值在于,它使得虚拟场景具备了真实世界的空间结构与属性,为LBS游戏、城市规划仿真、AR导航等应用提供了高保真的空间基底。通过模块化的图层管理与可视化器,开发者可以灵活定制地形、建筑、道路的生成规则与样式。本文聚焦于利用Mapbox Unity SDK实现这一融合,详细拆解了从环境

weixin_30235225的博客 311

微信小程序:map组件在mpvue中的实践

map组件在mpvue中的实践 MAP组件文档地址 &lt;map name="map-zsb" id="map-zsb" class="map-zsb" scale="18" 缩放比例,默认16取值范围5-18 :latitude="lat" :longitude="lng" 地图中心点对应的经纬度 :markers=&q

繁华落尽 2593

同花顺自动化交易避坑指南:pywinauto实战中验证码识别与界面弹窗处理

本文深入探讨同花顺自动化交易中的关键稳定性问题,重点解决验证码识别与弹窗处理两大难题。通过优化Tesseract OCR、整合打码平台API以及设计pywinauto弹窗监控体系,提供了一套完整的自动化交易解决方案,帮助交易者有效规避资金账户和持仓信息操作中的常见陷阱。

weixin_33734785的博客 486

荔枝派Nano内核编译

上文编译好uboot之后,想刷内核和根文件系统进去。其实官方的网盘里面,已经有打包好的系统镜像,包含所有的东西,可以直接烧录进flash或者TF卡,但是都是基于winbond芯片的,国产的xt25f128b刷进去妥妥的。所以没办法,只能自己再动手重新编译内核了。(PS:搞的我都想直接买一片w25q128换上了,有点麻烦,希望官方直接涨价或者出两版就行,不然对新手不友好啊)

木子点灯的博客 546

android google map marker,android google map marker placing

In my Android application I need to place marker at exact position on map. I pin a marker on map with 51.507351, -0.127758 (London) location. I used the following code to do the work.googleMap.addMark...

weixin_30764887的博客 174

架构决策之消息中间件MQ系列六-Pulsar

一、架构

恰恰虎的博客 7253

Google map(2)

1.显示内置的缩放控制器: mapView = (MapView) findViewById(R.id.mapView); mapView.setBuiltInZoomControls(true);      编写代码控制缩放:从MapView对象获取MapController实例,然后调用MapController的zoomOut()和zoomIn()方法。 Map

人至疯无敌 1074

nRF52840 低功耗蓝牙开发指南:从硬件架构到物联网应用实战

本文深入解析nRF52840低功耗蓝牙芯片的硬件架构与开发实践,涵盖从开发环境搭建到BLE协议栈开发的详细指南。通过实战案例分享低功耗优化技巧,帮助开发者高效实现物联网应用,特别适合智能家居和工业场景。

d3e4f的博客 417

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

React Native Map Link终极指南:坐标定位与地址解析两种方式对比与最佳实践

想要在你的React Native应用中实现智能地图导航功能吗?React Native Map Link是一个强大的开源库,它能让你的应用轻松打开用户手机上的任何地图应用,无论是使用精确的经纬度坐标还是通过地址解析进行定位。本文将深入探讨坐标定位和地址解析两种方式的优缺点,帮助你选择最适合你应用场景的方案,并分享实际开发中的最佳实践。 ## 📱 什么是React Native Map Lin

gitblog_00881的博客 354

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3578

Google Map for iOS SDK 开发之沿街道渲染轨迹

Google Map SDK for iOS 开发;Google Web API ; Google APIKey申请 ; 反编码Google特殊字符串 ; 沿街道渲染路径 ; Google Map自定义大头针和弹出气泡,以及点击气泡所产生的对应事件。

Suwy say Hello 675

无实习经验?IT应届生简历封神思路:把校园经历写成offer收割机

摘要: IT应届生无实习经历如何打造竞争力简历?本文揭秘“无实习简历封神指南”,通过四大步骤将校园经历转化为HR认可的硬核技能: 素材挖掘:课程设计、个人项目、社团活动、竞赛证书都是隐藏的“实战经验”,用STAR法则细化成果。 技能转化:匹配岗位JD关键词,用“动词+量化结果”包装经历(如“优化查询效率30%”)。 避坑指南:避免流水账、夸大技能或堆砌无关经历,聚焦技术能力与岗位需求。 核心逻辑:HR看重潜力而非经验,用校园经历证明学习能力、问题解决能力和技术落地能力。 无实习≠无竞争力,学会“翻译”经历,

通俗易懂学IT 421

C#与大数据分析:如何通过上位机进行设备故障诊断与预测

设备故障诊断是通过对设备的运行状态数据进行分析,识别和确认故障的类型和位置。而设备故障预测则是通过对设备的历史数据和运行状态进行分析,预测设备何时可能出现故障,从而进行预防性维护。数据采集:通过各种传感器、PLC、嵌入式设备等采集设备运行数据,如温度、压力、振动、转速、功率等。数据预处理:对采集到的数据进行清洗、去噪、缺失值处理、标准化等操作,以确保数据质量。特征工程:从原始数据中提取出有助于故障诊断和预测的特征,例如统计特征、时域特征、频域特征等。数据分析与建模。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1060

基于android的GPS导航软件

最近做一个GPS导航软件,其中主要是用android读取网络上的google地图,然后显示在手机上。可以实现位置查询,输入一个位置,可以读取到相应的坐标,然后通过坐标,动态的更新MapView. 1.如果获取现在的位置可以通过手机的gps硬件或者网络,通过Provider来获取

hello_kitty8888的专栏 1168

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

控经纬度显示地图与卫星

$(function () {         function latlong() {             return new google.maps.LatLng($("#lat").val(), $("#lng").val());         }         function position() {             map.setCenter(latlong

shang_111111的专栏 964

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)

看标题就会明白,两个经纬度之间真实距离这个一般的地图API有自带方法,直接调用便可得到结果,一般结果都是以米为单位。最近在做android版上的GoogleMap,找了半天API发现没有此类方法,看来只能自己实现了,接下来我就把如何计算两点之间(经纬度)的真实距离的算法写下来,原则上在各种地图版本上都通用,方便大家使用。 Google Map API:https://developers

其实并不难,是你太悲观 5万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Appium与Airtest深度对比:移动自动化测试工具选型实战指南

在软件测试领域,自动化测试是提升产品质量和迭代效率的关键技术。其核心原理是通过脚本模拟用户操作,实现测试用例的自动执行,从而解放人力、提高测试覆盖率和执行速度。从技术价值看,自动化测试不仅能保障软件功能的稳定性,还能在持续集成/持续交付(CI/CD)流程中发挥重要作用,实现快速反馈。在移动应用和游戏测试场景中,面对原生应用、混合应用以及游戏等不同测试对象,选择合适的自动化工具尤为关键。本文聚焦于Appium和Airtest这两大主流工具,深入解析它们的设计哲学、核心原理与适用场景,为测试工程师在技术选型时提

weixin_30294295的博客 458

在谷歌地图上绘制行政区域轮廓【结合高德地图的API】

实现思路: 1.利用高德地图行政区域API获得坐标列表 2.将坐标列表绘制在谷歌地图上【因为高德地图和国内的谷歌地图都是采用GCJ02坐标系,所有误差很小,可以不进行坐标误差转换】 注意点: 1.用百度地图的API来绘制行政区域,不太准确,很不推荐。(1)百度地图查询行政区域本身不准确,有的地方本来应该属于该区,被划分到其他区了(2)即使要用百度api,也要注意转换坐标,因...

weixin_30681121的博客 894
上一篇: android工作小结
下一篇: 最近正在看面试题...
explorerqp
博客等级 码龄15年 42粉丝 57原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值