A. html5地理定位api怎麼連接百度地圖
可以實現的,HTML5可以使用手機的GPS信息,利用網路等地圖的開放API就可以了。
HTML5中可以通過IP,WIFI信息,GPS,來實現地理定位,當然相關精度也是有所不同,所以如果要精確導航就得使用GPS信息。
下面是一段HTML5結合網路地圖API來獲取位置的代碼:
<div id="allmap"></div>當前定位地址:<a id="-gps"></a><span></span></div>
<script>
var map = new BMap.Map("allmap");
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
map.panTo(r.point);
//alert('您的位置:'+r.point.lng+','+r.point.lat);
var pt = r.point;
var geoc = new BMap.Geocoder();
geoc.getLocation(pt, function(rs){
var addComp = rs.addressComponents;
//alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
$("#-gps").text(addComp.district+addComp.street+addComp.streetNumber);
});
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true})
</script>
B. html5怎麼實現調用gps獲取地理位置具體代碼
<script>
varx=document.getElementById("demo");
functiongetLocation(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition);
}else{x.innerHTML=".";}
}
functionshowPosition(position){
x.innerHTML="Latitude:"+position.coords.latitude+
"<br/>Longitude:"+position.coords.longitude;
}
</script>
C. html5+怎麼獲取當前地理位置
定位功能(Geolocation)是HTML5的新特性,因此只有在支持HTML5的現代瀏覽器上運行,特別是手持設備如iphone,地理定位更加精確。首先我們要檢測用戶設備瀏覽器是否支持地理定位,如果支持則獲取地理信息。注意這個特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的,所以我們在訪問該應用時會提示是否允許地理定位,我們當然選擇允許即可。
function getLocation(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}else{
alert("瀏覽器不支持地理定位。");
}
}
上面的代碼可以知道,如果用戶設備支持地理定位,則運行 getCurrentPosition() 如果getCurrentPosition()運行成功,則向參數showPosition中規定的函數返回一個coordinates對象,getCurrentPosition() 方法的第二個參數showError用於處理錯誤,它規定當獲取用戶位置失敗時運行的函數。
我們先來看一下函數showError(),它規定獲取用戶地理位置失敗時的一些錯誤代碼處理方式:
function showError(error){
switch(error.code) {
case error.PERMISSION_DENIED:
alert("定位失敗,用戶拒絕請求地理定位");
break;
case error.POSITION_UNAVAILABLE:
alert("定位失敗,位置信息是不可用");
break;
case error.TIMEOUT:
alert("定位失敗,請求獲取用戶位置超時");
break;
case error.UNKNOWN_ERROR:
alert("定位失敗,定位系統失效");
break;
}
}
我們再來看函數showPosition(),調用coords的latitude和longitude即可獲取到用戶的緯度和經度。
function showPosition(position){
var lat = position.coords.latitude; //緯度
var lag = position.coords.longitude; //經度
alert('緯度:'+lat+',經度:'+lag);
}
利用網路地圖和谷歌地圖介面獲取用戶地址
上面我們了解了HTML5的Geolocation可以獲取用戶的經緯度,那麼我們要做的是需要把抽象的經緯度轉成可讀的有意義的真正的用戶地理位置信息。幸運的是網路地圖和谷歌地圖等提供了這方面的介面,我們只需要將HTML5獲取到的經緯度信息傳給地圖介面,則會返回用戶所在的地理位置,包括省市區信息,甚至有街道、門牌號等詳細的地理位置信息。
我們首先在頁面定義要展示地理位置的div,分別定義id#_geo和id#google_geo。我們只需修改關鍵函數showPosition()。先來看網路地圖介面交互,我們將經緯度信息通過Ajax方式發送給網路地圖介面,介面會返回相應的省市區街道信息。網路地圖介面返回的是一串JSON數據,我們可以根據需求將需要的信息展示給div#_geo。注意這里用到了jQuery庫,需要先載入jQuery庫文件。
function showPosition(position){
var latlon = position.coords.latitude+','+position.coords.longitude;
//
var url = "<a href="http://api.map..com/geocoder/v2/?ak=&callback=renderReverse&location="+latlon+"&output=json&pois=0">http://api.map..com/geocoder/v2/?ak=&callback=renderReverse&location="+latlon+"&output=json&pois=0</a>";
$.ajax({
type: "GET",
dataType: "jsonp",
url: url,
beforeSend: function(){
$("#_geo").html('正在定位...');
},
success: function (json) {
if(json.status==0){
$("#_geo").html(json.result.formatted_address);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#_geo").html(latlon+"地址位置獲取失敗");
}
});
});
再來看谷歌地圖介面交互。同樣我們將經緯度信息通過Ajax方式發送給谷歌地圖介面,介面會返回相應的省市區街道詳細信息。谷歌地圖介面返回的也是一串JSON數據,這些JSON數據比網路地圖介面返回的要更詳細,我們可以根據需求將需要的信息展示給div#google_geo。
function showPosition(position){
var latlon = position.coords.latitude+','+position.coords.longitude;
//google
var url = 'http://maps.google.cn/maps/api/geocode/json?latlng='+latlon+'&language=CN';
$.ajax({
type: "GET",
url: url,
beforeSend: function(){
$("#google_geo").html('正在定位...');
},
success: function (json) {
if(json.status=='OK'){
var results = json.results;
$.each(results,function(index,array){
if(index==0){
$("#google_geo").html(array['formatted_address']);
}
});
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#google_geo").html(latlon+"地址位置獲取失敗");
}
});
}
D. js微信獲取地理位置的介面怎麼用
微信官方文檔解釋如下:
公眾號須開通「上報地理位置」的介面;
用戶在關注後進入公眾號會話時,會彈框讓用戶確認是否允許公眾號使用其地理位置。(彈框只在關注後出現一次,用戶以後可以在公眾號詳情頁面進行操作)
用戶同意上報地理位置後,每次進入公眾號會話時,都會在進入時上報地理位置,上報地理位置以推送XML數據包到開發者填寫的URL來實現。
推送XML數據包示例:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[LOCATION]]></Event>
<Latitude>23.137466</Latitude>
<Longitude>113.352425</Longitude>
<Precision>119.385040</Precision>
</xml>
第三方在收到地理位置上報信息之後,只需要回復success表明收到即可(不允許回復消息給粉絲)
E. html5 geolocation怎麼使用
定位用戶的位置
HTML5 Geolocation API 用於獲得用戶的地理位置。
鑒於該特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的。
瀏覽器支持
Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位。
注釋:對於擁有 GPS 的設備,比如 iPhone,地理定位更加精確。
HTML5 - 使用地理定位
請使用 getCurrentPosition() 方法來獲得用戶的位置。
二、
HTML5 Geolocation API是新增的地理位置應用程序介面。它提供了一個可以准確感知瀏覽器用戶當前地理位置的方法。如果瀏覽器支持,且設備具有定位功能,就能夠直接使用這個API來獲取當前位置信息。
window.navigator.geolocation對象存在3個方法:
1. getCurrentPosition 獲取當前地理位置
2. watchPosition 監視位置信息
3. clearWatch 停止獲取位置信息
F. 手機上網瀏覽到有些網站顯示地理定位怎麼實現的
使用HTML5地理位置定位功能(純HTML代碼或JS)
利用網路地圖和谷歌地圖介面獲取用戶地址
G. HTML5的Geolocation介面可以獲取手機的gps定位嗎
Geolocation介面不可以獲取手機的gps定位,這個api具有自己特有的定位方式。
定位用戶的位置
HTML5 Geolocation API 用於獲得用戶的地理位置。
鑒於該特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的。
用法如下:
<!DOCTYPE html>
<html>
<body>
<p id="demo">點擊這個按鈕,獲得您的位置:</p>
<button onclick="getLocation()">試一下</button>
<div id="mapholder"></div>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
lat=position.coords.latitude;
lon=position.coords.longitude;
latlon=new google.maps.LatLng(lat, lon)
mapholder=document.getElementById('mapholder')
mapholder.style.height='250px';
mapholder.style.width='500px';
var myOptions={
center:latlon,zoom:14,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
};
var map=new google.maps.Map(document.getElementById("mapholder"),myOptions);
var marker=new google.maps.Marker({position:latlon,map:map,title:"You are here!"});
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
</script>
</body>
</html>
H. 用戶提交訂單 上傳地理位置 介面怎麼設計
1、介面定義確定MVCGET或者POST式
由於我整Web API平台基於MVC基礎進行API發整Web API介面定義候般需要顯示聲明介面[HttpGet]或者[HttpPost]雖些介面用聲明避免現類似面錯誤信息顯式聲明處
請求資源支持 http POST
例基類定義查找象介面所示
///
/// 查詢資料庫,檢查否存指定ID象
///
/// 象ID值
/// 存則返指定象,否則返Null
[HttpGet]
public virtual T FindByID(string id, string token)
增刪改介面般需要聲明POST式提交數據且基於安全性考慮需要攜帶更參數
///
/// 插入指定象資料庫
///
/// 指定象
/// 執行操作否功
[HttpPost]
public virtual CommonResult Insert(T info, string token, string signature, string timestamp, string nonce, string appid)
2、態象介面定義
般Web API介面面我能都碰簡單類型參數想讓POST式提交數據我兩種處理種定義類放置些參數種採用態JObject參數前者便我能每介面參數定義實體類能難管理類定義面微信API調用介面案例我需要設置處理規則
介面調用請求說明
http請求式: POST(請使用https協議)
POST數據格式:json
POST數據例:{"group":{"id":108,"name":"test2_modify2"}}
我採用JObject呢我看介面定義處理代碼JObjectNewtonsoft.Json.Linq命名空間象
///
/// 修改用戶密碼
///
/// 包含userNameuserPassword復合象
/// 用戶訪問令牌
///
[HttpPost]
public CommonResult ModifyPassword(JObject param, string token)
{
//令牌檢查,通則拋異
CheckResult checkResult = CheckToken(token);
dynamic obj = param;
if (obj != null)
{
string userName = obj.userName;
string userPassword = obj.userPassword;
bool success = BLLFactory.Instance.ModifyPassword(userName, userPassword);
return new CommonResult(success);
}
else
{
throw new MyApiException("傳遞參數現錯誤");
}
}
其我JObject象轉換我所需要象候我沒定義具體實體類採用dynamic語聲明態象由運行獲取應屬性
dynamic obj = param;
我調用候態POST應JSON象給Web API介面需要預先定義各種介面參數類
///
/// 調用Web API介面修改用戶密碼
///
/// 用戶名稱
/// 修改密碼
/// 修改功返true否則返false
public bool ModifyPassword(string userName, string userPassword)
{
var action = "ModifyPassword";
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
string url = GetTokenUrl(action);
CommonResult result = JsonHelper.ConvertJson(url, postData);
return (result != null) ? result.Success : false;
}
其GetTokenUrl根據tokenAPI址等參數構建完整提交址我面代碼通
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
態創建象並JSON字元串數據POST提交應API介面面即結進行象轉換算完
3、集合頁處理
介面面我都需要用頁處理Web API例外提交數據檢索效率減少伺服器數據處理壓力同提交客戶端數據顯示速度
般集合介面定義所示(通用性基類介面)
///
/// 返資料庫所象集合
///
/// 指定象集合
[HttpGet]
public virtual List GetAll(string token)
{
//檢查用戶否許可權否則拋MyDenyAccessException異
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List list = baseBLL.GetAll();
return list;
}
返記錄比較般情況需要頁頁處理介面定義所示
///
/// 根據條件查詢資料庫,並返象集合(用於頁數據顯示)
///
/// 指定象集合
[HttpPost]
public virtual PagedList FindWithPager(string condition, PagerInfo pagerInfo, string token)
頁介面返結面用PageList泛型類便我獲取前記錄及總數定義所示
///
/// 頁集合
///
/// 象
public class PagedList
{
///
/// 返記錄總數
///
public int total_count { get; set; }
///
/// 列表集合
///
public List list { get; set; }
}
整頁處理Web API介面實現所示
///
/// 根據條件查詢資料庫,並返象集合(用於頁數據顯示)
///
/// 指定象集合
[HttpPost]
public virtual PagedList FindWithPager(string condition, PagerInfo pagerInfo, string token)
{
//檢查用戶否許可權否則拋MyDenyAccessException異
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List list = baseBLL.FindWithPager(condition, pagerInfo);
//構造Json格式傳遞
var result = new PagedList() { total_count = pagerInfo.RecordCount, list = list };
return result;
}
客戶端調用頁Web API代碼所示
///
/// 根據條件查詢資料庫,並返象集合(用於頁數據顯示)
///
/// 查詢條件
/// 頁實體
/// 指定象集合
public virtual List FindWithPager(string condition, ref PagerInfo pagerInfo)
{
var action = "FindWithPager";
string url = GetTokenUrl(action) + string.Format("&condition={0}", condition);
var postData = pagerInfo.ToJson();
List result = new List();
PagedList list = JsonHelper<PagedList>.ConvertJson(url, postData);
if (list != null)
{
pagerInfo.RecordCount = list.total_count;//修改總記錄數
result = list.list;
}
return result;
}
4、混合框架界面整合Web API介面
整Web API平台構建及混合框架整合程我各模塊遵循相獨立式進行發整合實現直接訪問資料庫、WCF服務獲取數據及通WebAPI調用式獲取數據幾種式統實現整混合框架高度整合
整混合框架核相獨立式整合各重用模塊我遵循定基礎快速構建統應用平台
搭建完畢整WebAPI平台其包括服務端內容API控制器式發布應Web API介面
每混合框架獨立模塊面我封裝應Web API客戶端調用處理實現Web API調用式
Win10使用Web API模式運行混合框架獲主體界面效所示
獨立模塊許可權管理系統界面所示
系列文章所示:
Web API應用架構Winform混合框架應用(1)
Web API應用架構Winform混合框架應用(2)--自定義異結處理
Web API介面設計經驗總結
Web API應用架構Winform混合框架應用(3)--Winfrom界面調用WebAPI程解
Web API應用架構Winform混合框架應用(4)--利用代碼工具快速發整套應用
Web API應用架構Winform混合框架應用(5)--系統級別字典公司級別字典並存處理式
I. android如何獲取地理位置
三種方式進行定位,獲取用戶位置,分別是基於基站定位, 網路定位,GPS定位。
1.基站定位(passive):這是基於網路基站進行定位的,定位的精確度在幾十米到幾千米不等,在城市中基站覆蓋率比較高,推薦使用基站定位,如果是在郊區,基站相距較遠,基站的覆蓋沒有城裡好,定位的誤差比較大。如果在郊區不推薦使用基站定位。
2.網路定位:wifi定位,網路定位
3.GPS定位:與衛星進行通信。手機中嵌入了GPS模塊(精簡版的A-GPS),通過A-GPS搜索衛星, 獲取經緯度。使用GPS的弊端是:必須站在空曠的地方,頭頂對著天空,如果雲層厚了,也會受到一定的影響。精確度:10-50米
擴展知識:
使用Android是定位必備的許可權:
< uses-permission android:name= " android.permission.ACCESS_FINE_LOCATION " /> //精確定位
<uses-permission android:name= "android.permission.ACCESS_MOCK_LOCATION" /> //模擬器
<uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" /> //粗糙定位
//獲取定位管理對象
LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);
String[] names=lm.getAllProviders();//獲取所有的位置提供者,一般三種
Criteria criteria=new Criteria();//查詢條件,如果設置了海拔,則定位方式只能是GPS;
criteria.setCostAllowed(true);//是否產生開銷,比如流量費
String provider=lm.getBaseProvider(criteria,true)//獲取最好的位置提供者,第二個參數為true,表示只獲取那些被打開的位置提供者
lm.requestLocationUpdates(provier,0,0,new LocationListener(){});//獲取位置。第二個參數表示每隔多少時間返回一次數據,第三個參數表示被定位的物體移動每次多少米返回一次數據。
private class MyLocationListener implements LocationListener {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
@Override
public void onLocationChanged(Location location) {
System. out.println( "服務中位置監聽發送了變化了" );
float accuracy = location.getAccuracy(); // 精確度
double altitude = location.getAltitude(); // 海拔
double latitude = location.getLatitude(); // 緯度
double longitude = location.getLongitude(); // 經度
String locationInfo = "jing:" + longitude + ",wei:" + latitude + ",haiba:" + altitude + ",jingque:" + accuracy;
Editor edit = sp.edit();
edit.putString( "location", locationInfo);
edit.commit();
}
} public void onProviderDisabled(String provider) {
}
J. 如何通過google map api實現地圖定位
1. 通過 IP 得到地址
2. JavaScript下使用地理解碼
varmap=newGMap2(document.getElementById("map"));
vargeocoder=newGClientGeocoder();
functionshowAddress(address){
geocoder.getLatLng(
address,
function(point){
if(!point){
alert(address+"notfound");
}else{
map.setCenter(point,13);
varmarker=newGMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}
}
);
}