手机端GSP地图的定位 并且在网页上显示地图的轨迹
百度地图定位手机端功能开发:
第一步:申请百度的开发者密钥http://developer.baidu.com/map/android-mobile-apply-key.htm 申请到开发API的key.
第二步:依照官方文档在manifest.xml中配置http://openapi.baidu.com/map/geosdk-android-developv2.4.htm
百度地图使用服务:
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" android:permission="android.permission.BAIDU_LOCATION_SERVICE"/>
及联网及使用声明权限:
- <permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission>
- <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission>
第三步:写获取地理位置的类:
import java.util.Date;
import com.baidu.location.*;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKEvent;
import com.baidu.mapapi.MKGeneralListener;
importcom.mypatroller.data.LocationInfo.SItude;
import android.app.Application;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Process;
import android.os.Vibrator;
public class Location extends Application {
public LocationClient mLocationClient = null;
public String locationData = "";
public String poiData = "";
publicboolean isGpsOn = true;
publicMyLocationListenner myListener = new MyLocationListenner();
publicNotifyLister mNotifyer=null;
publicVibrator mVibrator01;
publicstatic SItude slocation = new SItude(); // 一个包括经纬度的类,包括:latitude,longitude
//start加入百度题图 路径查询功能
staticLocation mLocation ;
//百度MapAPI的管理类
publicBMapManager mBMapMan = null;
publicString mStrKey = "A60CECF1348D23466699D42836FC436FC151E0AC";//百度地图调用KEY 到官网申请
booleanm_bKeyRight = true;
//常用事件监听,用来处理通常的网络错误,授权验证错误等
publicstatic class MyGeneralListener implements MKGeneralListener {
@Override
publicvoid onGetNetworkState(int iError) {
Toast.makeText(Location.mLocation.getApplicationContext(),"网络信号不好!",
Toast.LENGTH_LONG).show();
}
@Override
publicvoid onGetPermissionState(int iError) {
if(iError == MKEvent.ERROR_PERMISSION_DENIED) {
//授权Key错误:
Toast.makeText(Location.mLocation.getApplicationContext(),
"请在BMapApiDemoApp.java文件输入正确的授权Key!",
Toast.LENGTH_LONG).show();
Location.mLocation.m_bKeyRight= false;
}
}
}
@Override
publicvoid onCreate() {
mLocation= this;
mLocationClient= new LocationClient(Location.mLocation.getApplicationContext());
mLocationClient.registerLocationListener(myListener );
mBMapMan= new BMapManager(this);
mBMapMan.init(this.mStrKey,new MyGeneralListener());
super.onCreate();
}
publicvoid logMsg(String str) {
try{
locationData= str;
}catch (Exception e) {
e.printStackTrace();
}
}
publicclass MyLocationListenner implements BDLocationListener {
//定位
@Override
publicvoid onReceiveLocation(BDLocation location) {
if(location == null)
return;
StringBuffersb = new StringBuffer(256);
sb.append("time:");
sb.append(location.getTime());
sb.append(";nerrorcode:");
sb.append(location.getLocType());
sb.append(";latitude:");
sb.append(location.getLatitude());
sb.append(";lontitude:");
sb.append(location.getLongitude());
sb.append(";radius:");
sb.append(location.getRadius());
if(location.getLocType() == BDLocation.TypeGpsLocation){
sb.append(";speed:");
sb.append(location.getSpeed());
sb.append(";satellite:");
sb.append(location.getSatelliteNumber());
}else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
sb.append(";province:");
sb.append(location.getProvince());
sb.append(";city:");
sb.append(location.getCity());
sb.append(";district:");
sb.append(location.getDistrict());
sb.append(";addr:");
sb.append(location.getAddrStr());
}
sb.append(";sdkversion:");
sb.append(mLocationClient.getVersion());
logMsg(sb.toString());
Datedate = new Date();
Log.d("receivelocation",String.valueOf(date.getTime()));
slocation.latitude= location.getAltitude();
slocation.longitude= location.getLongitude();
}
//数据库中查询位置
publicvoid onReceivePoi(BDLocation poiLocation) {
if(poiLocation == null){
return;
}
StringBuffersb = new StringBuffer(256);
sb.append("Poitime:");
sb.append(poiLocation.getTime());
sb.append(";errorcode:");
sb.append(poiLocation.getLocType());
sb.append(";latitude:");
sb.append(poiLocation.getLatitude());
sb.append(";lontitude:");
sb.append(poiLocation.getLongitude());
sb.append(";radius:");
sb.append(poiLocation.getRadius());
if(poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){
sb.append(";addr:");
sb.append(poiLocation.getAddrStr());
}
if(poiLocation.hasPoi()){
sb.append(";Poi:");
sb.append(poiLocation.getPoi());
}else{
sb.append("noPoiinformation");
}
logMsg(sb.toString());
}
}
/**
*地理位置改变后的接收消息
*/
publicclass NotifyLister extends BDNotifyListener{
publicvoid onNotify(BDLocation mlocation, float distance){
mVibrator01.vibrate(1000);
}
}
//建议在您app的退出之前调用mapadpi的destroy()函数,避免重复初始化带来的时间消耗
publicvoid onTerminate() {
// TODO Auto-generated methodstub
if(mBMapMan != null) {
mBMapMan.destroy();
mBMapMan= null;
}
super.onTerminate();
}
}
第四步:在主函数中的调用,并设置GPS工具的属性
//基于地理位置的定位
private LocationClient mLocClient;
LocationInfo.SItude station;
使用方法:
在onCreate方法中调用函数 startTheLocation()函数;
/**
* 更新软件的地址信息
*/
private void startTheLocation()
{
//使用地理位置进行定位
mLocClient = ((Location)getApplication()).mLocationClient;
((Location)getApplication()).poiData = "";
setLocationOption();
mLocClient.start();
}
//设置相关参数
private void setLocationOption(){
LocationClientOption option = new LocationClientOption();
option.setPriority(LocationClientOption.NetWorkFirst); // 设置网络优先
option.setOpenGps(false);//打开gps
option.disableCache(true);
option.setCoorType("bd09ll"); //设置坐标类型
option.setPriority(LocationClientOption.NetWorkFirst);
option.setProdName("abc");//你的应用名称
option.setAddrType("all"); //设置地址信息,仅设置为“all”时有地址信息,默认无地址信息
option.setScanSpan(60000); //设置定位模式,小于1秒则一次定位;大于等于1秒则定时定位,设置第隔一分钟定位一次
mLocClient.setLocOption(option);
}
第五步:获取定位后的地理位置:
String strlatitude = "",strlongtitude = "";
station = ((Location)getApplication()).slocation; //获取定位信息
if(station != null)
{
strlatitude = station.latitude;
strlongtitude = station.longitude;
}
用Google地图JS在网页上的显示:
<div id="map_canvas" style="width: 100%; height: 450px;"> </div>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=你的Google在图KEY&sensor=false" charset="utf-8">
</script>
<script type="text/javascript" charset="utf-8" >
var map;
var markersArray = [];
var beaches = null;
var latitude, longitude;
var poly;
function setMarkers(locations) {
var path = poly.getPath();
for (var i = 0; i < locations.length; i++) {
var beach = locations[i];
var strTitle = "#" + beach[3] + "; 时间:" + beach[0];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
path.push(myLatLng);
if (i == 0) {
var image = new google.maps.MarkerImage('/Content/icons/s.png',
// This marker is 20 pixels wide by 32 pixels tall.
new google.maps.Size(20, 32),
// The origin for this image is 0,0.
new google.maps.Point(0, 0),
// The anchor for this image is the base of the flagpole at 0,32.
new google.maps.Point(10, 32));
}
else if (i == locations.length - 1) {
var image = new google.maps.MarkerImage('/Content/icons/e.png',
// This marker is 20 pixels wide by 32 pixels tall.
new google.maps.Size(20, 32),
// The origin for this image is 0,0.
new google.maps.Point(0, 0),
// The anchor for this image is the base of the flagpole at 0,32.
new google.maps.Point(10, 32));
}
else {
var image = new google.maps.MarkerImage('/Content/icons/p.png',
// This marker is 20 pixels wide by 32 pixels tall.
new google.maps.Size(20, 32),
// The origin for this image is 0,0.
new google.maps.Point(0, 0),
// The anchor for this image is the base of the flagpole at 0,32.
new google.maps.Point(10, 32));
}
marker = new google.maps.Marker({
position: myLatLng,
map: map,
// shadow: shadow,
icon: image,
// shape: shape,
//title: beach[0],
title: strTitle,
zIndex: beach[3]
});
markersArray.push(marker);
}
}
// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}
// Shows any overlays currently in the array
function showOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(map);
}
}
}
function getLatestInitPosition(locations) {
for (var i = 0; i < locations.length; i++) {
var beach = locations[i];
latitude = beach[1].toString();
longitude = beach[2].toString();
break;
}
}
function updateTheTrace() {
/**
* Data for the markers consisting of a name, a LatLng and a zIndex for
* the order in which these markers should display on top of each
* other.
*/
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(31.2, 121.6),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var polyOptions = {
strokeColor: '#f01e50',
strokeOpacity: 1.0,
strokeWeight: 3
};
if (beaches != null&&beaches !="") {
getLatestInitPosition(beaches);
myOptions = {
zoom: 10,
center: new google.maps.LatLng(latitude, longitude),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
deleteOverlays();
poly = new google.maps.Polyline(polyOptions);
poly.setMap(map);
setMarkers(beaches);
//setMarkers(beaches);
}else {
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
}
手机端GSP地图的定位 并且在网页上显示地图的轨迹相关推荐
- 关于手机端CSS Sprite图标定位的一些领悟
今天在某个群里面闲逛,看见一个童鞋分享了一个携程的移动端的页面. 地址这里我也分享下吧:http://m.ctrip.com/html5/在手机端我都很少用雪碧图合并定位图标,用的比较多就是用字体图标 ...
- 将手绘地图或自制地图显示在网页上(利用百度API)
利用百度APi实现将手绘地图展示在网页上,达到类似这样的效果: 切图参考了:cnblog jz1108 并用了其工具, 表示非常感谢! 百度地图API目前默认支持两种地图类型(map type):普通 ...
- 手机端安卓、苹果的分页逻辑:上拉、下拉动作
手机端安卓.苹果的分页逻辑: 大方向:与传统分页逻辑不同,上拉取"时间点"之后的数据,下拉取"时间点"之后的数据: 核心参数设计: timestamp:时间点, ...
- html百度地图中心点不正确,关于网页调用百度地图定位不准的问题?
请按照如下步骤排查你的代码:确保你的运行环境正常(直接使用百度地图看定位是否准确)以及代码没有基本逻辑错误 使用百度坐标拾取器拾取你的目标位置,同时输出你代码里获取的坐标,两相比较排查错误 考虑使用B ...
- 单片机数据在网页上显示_不务正业的Excel也玩地图,在地图上显示数据,好玩又简单...
Excel的尴尬 Excel越来越不象Excel,我们对Excel的第一映象就是制表.数据分析.常规操作自不必说,高级一点的无非就是透视图表.VBA等.不管再怎么高级,Excel似乎都是围绕数字在操作 ...
- 高德地图的基础使用(一)显示地图
(注:先注册,高德开发者 ) 1.地址:https://lbs.amap.com/ 2.控制台 3.创建新应用 4.编辑信息 4.1 获取安全码SHA1(命令提示符方式:win+r - cmd ) c ...
- 手机端html使用地理定位,html5之使用地理定位
1)使用地理定位: 通过navigator.geolocation访问地理定位功能,返回一个Geolocation对象: 1.1)Geolocation对象成员: getCurrentPosition ...
- 高德地图去掉定位按钮_怎样修改百度地图店名怎么取消高德地图定位
11月28日下午,**百度地图今天公布了与四个北欧旅游局的战略合作,并公布了本月将在非洲.欧洲和亚洲推出的106个国家. 今年4月,百度地图正式发布了*对外开放国际化战略,并在年底宣传完成150多个国 ...
- android百度地图拖拽地图定位,百度地图的定位以及拖拽(显示坐标位置)
搜索热词 截图示例 html{height:100%} body{height:100%;margin:0px;padding:0px} #map_canvas{ margin:0 auto; bor ...
最新文章
- Open3D 三维点云读取可视化、下采样、去除离群点、地面提取
- 超级详细的解决方法 (CentOS7) :永久修改 mysql read-only 问题 could not retrieve transation read-only status server
- OSPF LSA序列号问题
- Cinder 架构分析、高可用部署与核心功能解析
- 系统架构师秘籍(二)软件架构- 续
- 5 加盐_小葱拌豆腐的5种做法,收藏起来慢慢学!
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- ssl1213-多边形面积【差积,计算几何】
- 总结get和post区别
- 在matplotlib中关闭绘图轴的方法
- 关于数据结构,这个重要概念不了解可不行
- 2015-2016书籍计划
- RDCMan 安装问题
- 如何用WGDI进行共线性分析(三)
- UE4 Slate七 Slate本地化, UE4编辑器如何做的本地化
- 联通4g满格但是网速慢_4G信号明明满格,但网速却慢过蜗牛,是什么原因?
- mysql 错误问题_Mysql常见的几个错误问题及解决方法
- 用计算机说出人说的话,用计算机语言说一句情话
- 【沃顿商学院学习笔记】领导力——Business Impact:09 逻辑模型四 Logic Model4
- 爬取上交所公司信息,根据公司股票代码获取公司注册地址以及地址的经纬度