谷歌定位和中国移动gps定位系统定位哪个准

下次自动登录
关注移动互联网和移动APP开发工具、开发框架、测试工具、微信开发、Android源码、Android开源类库以及各种开源组件的IT科技网站
现在的位置:
Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位
最简单的手机定位方式当然是通过GPS模块(现在大部分的智能机应该都有了)。GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电;2,绝大部分用户默认不开启GPS模块;3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4,室内几乎无法使用。这其中,缺点2,3都是比较致命的。需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用。
另外一种常见的定位方式是基站定位。大致思路就是采集到手机上的基站ID号(cellid)和其它的一些信息(MNC,MCC,LAC等等),然后通过网络访问一些定位服务,获取并返回对应的经纬度坐标。基站定位的精确度不如GPS,但好处是能够在室内用,只要网络通畅就行。
还有Wifi定位。和基站定位类似,这种方式是通过获取当前所用的wifi的一些信息,然后访问网络上的定位服务以获得经纬度坐标。因为它和基站定位其实都需要使用网络,所以在Android也统称为Network方式。
最后需要解释一点的是AGPS方式。很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高。
本文分别介绍GPS定位、以及基于Google的网络Wifi定位,以及最后的使用百度LBS的定位(百度LBS的定位功能比较强大,集成了GPS,网络wifi以及基站定位三种定位方法)。主要用例就是利用这三种方法获取位置经纬度,以及利用经纬度来获取所在的城市及区域
而根据经纬度来获取所在位置的城市及区域全部都是采用百度地图的API:http://api./geocoder?output=json&location=39..491146key=您的key
,这个key需要你自己申请百度开发者账号来得到的。
首先来看看定位实例效果图如下:
(1)打开GPS设置
private void openGPSSettings() {
& & & & LocationManager alm = (LocationManager) this
& & & & & & & & .getSystemService(Context.LOCATION_SERVICE);
& & & & if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
& & & & & & Toast.makeText(this, &GPS模块正常&, Toast.LENGTH_SHORT).show();
& & & & & & doWork();
& & & & & &
& & & & } else {
& & & & & & Toast.makeText(this, &请开启GPS!&, Toast.LENGTH_SHORT).show();
& & & & & & Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
& & & & & & startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面
(2)通过GPS获取经纬度信息
private void doWork() {
& & & & String msg = &&;
& & & & LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
& & & & Criteria criteria = new Criteria();
& & & & // 获得最好的定位效果
& & & & criteria.setAccuracy(Criteria.ACCURACY_FINE);
& & & & criteria.setAltitudeRequired(false);
& & & & criteria.setBearingRequired(false);
& & & & criteria.setCostAllowed(false);
& & & & // 使用省电模式
& & & & criteria.setPowerRequirement(Criteria.POWER_LOW);
& & & & // 获得当前的位置提供者
& & & & String provider = locationManager.getBestProvider(criteria, true);
& & & & // 获得当前的位置
& & & & Location location = locationManager.getLastKnownLocation(provider);
& & & & double latitude = location.getLatitude();
& & & & double longitude = location.getLongitude();
& & & & locationString = &&location=& + latitude + &,& +
& & & & keyString = &&key=您的key&;
& & & & questURL = questURL + locationString + keyS
& & & & new ReadJSONFeedTask().execute(questURL);
(3)由经纬度获取所在城市和区域的ReadJSONFeedTask类的实现:
& & &* 由经纬度获取所在的城市及区域信息
& & &* @author caizhiming
& & private class ReadJSONFeedTask extends AsyncTask&String, Void, String& {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & @Override
& & & & protected String doInBackground(String... urls) {
& & & & & & // TODO Auto-generated method stub
& & & & & & return readJSONFeed(urls[0]);
& & & & @Override
& & & & protected void onPostExecute(String result) {
& & & & & & // TODO Auto-generated method stub
& & & & & & String strI
& & & & & & try {
& & & & & & & & JSONObject jsonObject = new JSONObject(result);
& & & & & & & & JSONObject resultObject = jsonObject.getJSONObject(&result&);
& & & & & & & & JSONObject addressComponentObject = resultObject
& & & & & & & & & & & & .getJSONObject(&addressComponent&);
& & & & & & & & String city = addressComponentObject.getString(&city&);
& & & & & & & & String district = addressComponentObject.getString(&district&);
& & & & & & & & city = &城市:& +
& & & & & & & & district = & & &区:& +
& & & & & & & & stringBuilder.append(city + district);
& & & & & & & & textView.setText(stringBuilder.toString());
& & & & & & } catch (JSONException e) {
& & & & & & & & // TODO Auto-generated catch block
& & & & & & & & e.printStackTrace();
& & & & & & }
& & &* 请求json数据
& & &* @param url
& & &* @author caizhiming
& & public String readJSONFeed(String url) {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & HttpClient client = new DefaultHttpClient();
& & & & HttpGet httpGet = new HttpGet(url);
& & & & HttpR
& & & & try {
& & & & & & response = client.execute(httpGet);
& & & & & & StatusLine statusLine = response.getStatusLine();
& & & & & & int statusCode = statusLine.getStatusCode();
& & & & & & if (statusCode == 200) {
& & & & & & & & HttpEntity entity = response.getEntity();
& & & & & & & & InputStream content = entity.getContent();
& & & & & & & & BufferedReader reader = new BufferedReader(
& & & & & & & & & & & & new InputStreamReader(content));
& & & & & & & & S
& & & & & & & & while ((line = reader.readLine()) != null) {
& & & & & & & & & & stringBuilder.append(line);
& & & & & & & & }
& & & & & & } else {
& & & & & & & & Log.e(&JSON&, &Failed to download file&);
& & & & & & }
& & & & } catch (ClientProtocolException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & } catch (IOException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & return stringBuilder.toString();
2. 网络WIFI定位
(1) 通过网络WIFI来获取经纬度信息:
/* ====================Google Location By NetWork=========================== */
& & private void getLocationByNetwork() {
& & & & LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
& & & & LocationListener locationListener = new LocationListener() {
& & & & & & // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
& & & & & & @Override
& & & & & & public void onStatusChanged(String provider, int status,
& & & & & & & & & & Bundle extras) {
& & & & & & }
& & & & & & // Provider被enable时触发此函数,比如GPS被打开
& & & & & & @Override
& & & & & & public void onProviderEnabled(String provider) {
& & & & & & }
& & & & & & // Provider被disable时触发此函数,比如GPS被关闭
& & & & & & @Override
& & & & & & public void onProviderDisabled(String provider) {
& & & & & & }
& & & & & & // 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
& & & & & & @Override
& & & & & & public void onLocationChanged(Location location) {
& & & & & & & & if (location != null) {
& & & & & & & & & & Log.e(&Map&,
& & & & & & & & & & & & & & &Location changed : Lat: & + location.getLatitude()
& & & & & & & & & & & & & & & & & & + & Lng: & + location.getLongitude());
& & & & & & & & }
& & & & & & }
& & & & };
& & & & locationManager.requestLocationUpdates(
& & & & & & & & LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
& & & & Location location = locationManager
& & & & & & & & .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
& & & & double latitude = 0;
& & & & double longitude = 0;
& & & & if (location != null) {
& & & & & & latitude = location.getLatitude(); // 经度
& & & & & & longitude = location.getLongitude(); // 纬度
& & & & locationString = &&location=& + latitude + &,& +
& & & & keyString = &&key=你的key&;
& & & & questURL = questURL + locationString + keyS
& & & & Toast.makeText(this, locationString, Toast.LENGTH_LONG).show();
& & & & new ReadJSONFeedTask().execute(questURL);
(2)由经纬度获取所在城市和区域的ReadJSONFeedTask类的实现:
& & &* 由经纬度获取所在的城市及区域信息
& & &* @author caizhiming
& & private class ReadJSONFeedTask extends AsyncTask&String, Void, String& {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & @Override
& & & & protected String doInBackground(String... urls) {
& & & & & & // TODO Auto-generated method stub
& & & & & & return readJSONFeed(urls[0]);
& & & & @Override
& & & & protected void onPostExecute(String result) {
& & & & & & // TODO Auto-generated method stub
& & & & & & String strI
& & & & & & try {
& & & & & & & & JSONObject jsonObject = new JSONObject(result);
& & & & & & & & JSONObject resultObject = jsonObject.getJSONObject(&result&);
& & & & & & & & JSONObject addressComponentObject = resultObject
& & & & & & & & & & & & .getJSONObject(&addressComponent&);
& & & & & & & & String city = addressComponentObject.getString(&city&);
& & & & & & & & String district = addressComponentObject.getString(&district&);
& & & & & & & & city = &城市:& +
& & & & & & & & district = & & &区:& +
& & & & & & & & stringBuilder.append(city + district);
& & & & & & & & textView.setText(stringBuilder.toString());
& & & & & & } catch (JSONException e) {
& & & & & & & & // TODO Auto-generated catch block
& & & & & & & & e.printStackTrace();
& & & & & & }
& & &* 请求json数据
& & &* @param url
& & &* @author caizhiming
& & public String readJSONFeed(String url) {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & HttpClient client = new DefaultHttpClient();
& & & & HttpGet httpGet = new HttpGet(url);
& & & & HttpR
& & & & try {
& & & & & & response = client.execute(httpGet);
& & & & & & StatusLine statusLine = response.getStatusLine();
& & & & & & int statusCode = statusLine.getStatusCode();
& & & & & & if (statusCode == 200) {
& & & & & & & & HttpEntity entity = response.getEntity();
& & & & & & & & InputStream content = entity.getContent();
& & & & & & & & BufferedReader reader = new BufferedReader(
& & & & & & & & & & & & new InputStreamReader(content));
& & & & & & & & S
& & & & & & & & while ((line = reader.readLine()) != null) {
& & & & & & & & & & stringBuilder.append(line);
& & & & & & & & }
& & & & & & } else {
& & & & & & & & Log.e(&JSON&, &Failed to download file&);
& & & & & & }
& & & & } catch (ClientProtocolException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & } catch (IOException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & return stringBuilder.toString();
3.使用百度LBS的SDK定位
(1)导入百度的LBS的SDK开发Jar包,开发者可以到百度开发者中心去即可。即BaiduLBS_.jar包,放在项目的libs目录下即可。需要注意的是,同时需要在libs目录下建立armeabi目录,并在该目录下放sdk中的liblocSDK4d.so文件,这样才能使用sdk。
(2)初始化百度LBS定位信息,包括初始化定位客户端,定位监听器,定位模式等信息:
& & &* baidu lbs location
& & &* @author caizhiming
& & private void InitLocation() {
& & & & Log.v(&LocationActivity&, &InitLocation&);
& & & & mLocationClient = new LocationClient(this.getApplicationContext()); // 声明LocationClient类
& & & & myListener = new MyLocationListener();
& & & & mLocationClient.registerLocationListener(myListener); // 注册监听函数
& & & & LocationClientOption option = new LocationClientOption();
& & & & option.setLocationMode(tempMode);// 设置定位模式
& & & & option.setCoorType(tempcoor);// 返回的定位结果是百度经纬度,默认值gcj02
& & & & int span = 3000;
& & & & option.setScanSpan(span);// 设置发起定位请求的间隔时间为5000ms
& & & & option.setIsNeedAddress(false);
& & & & mLocationClient.setLocOption(option);
另外,还需要在AndroidMenifest.xml中配置key信息如下:
&!-- meta-data需要写在application中 --&
& & & & &meta-data
& & & & & & android:name=&com.baidu.lbsapi.API_KEY&
& & & & & & android:value=&您的key& /&
最后还需要AndroidMenifest.xml中配置相应需要的权限如下:
&!-- baidu lbs &--&
& & &uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.READ_PHONE_STATE& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.INTERNET& /&
& & &uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.READ_LOGS& &
& & &/uses-permission&
& & &uses-permission android:name=&android.permission.VIBRATE& /&
& & &uses-permission android:name=&android.permission.WAKE_LOCK& /&
& & &uses-permission android:name=&android.permission.WRITE_SETTINGS& /&
(3)启动百度LBS的定位服务并获取经纬度等信息:
& & &* baidu lbs location
& & &* @author caizhiming
& & private void getLocationByBaiduLBS() {
& & & & Log.v(&LocationActivity&, &getLocationByBaiduLBS&);
& & & & mLocationClient.start();
& & &* baidu lbs location
& & &* @author caizhiming
& & public class MyLocationListener implements BDLocationListener {
& & & & @Override
& & & & public void onReceiveLocation(BDLocation location) {
& & & & & & Log.v(&LocationActivity&, &MyLocationListener-onReceiveLocation&);
& & & & & & if (location == null)
& & & & & & & &
& & & & & & StringBuffer sb = new StringBuffer(256);
& & & & & & sb.append(&time : &);
& & & & & & sb.append(location.getTime());
& & & & & & sb.append(&/nerror code : &);
& & & & & & sb.append(location.getLocType());
& & & & & & sb.append(&/nlatitude : &);
& & & & & & sb.append(location.getLatitude());
& & & & & & sb.append(&/nlontitude : &);
& & & & & & sb.append(location.getLongitude());
& & & & & & sb.append(&/nradius : &);
& & & & & & sb.append(location.getRadius());
& & & & & & if (location.getLocType() == BDLocation.TypeGpsLocation) {
& & & & & & & & sb.append(&/nspeed : &);
& & & & & & & & sb.append(location.getSpeed());
& & & & & & & & sb.append(&/nsatellite : &);
& & & & & & & & sb.append(location.getSatelliteNumber());
& & & & & & } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
& & & & & & & & sb.append(&/naddr : &);
& & & & & & & & sb.append(location.getAddrStr());
& & & & & & }
& & & & & & logMsg(sb.toString());
& & & & & & locationString = &&location=& + location.getLatitude() + &,&
& & & & & & & & & & + location.getLongitude();
& & & & & & keyString = &&key=你的key&;
& & & & & & questURL = questURL + locationString + keyS
& & & & & & new ReadJSONFeedTask().execute(questURL);
(4)由经纬度获取所在城市和区域的ReadJSONFeedTask类的实现:
& & &* 由经纬度获取所在的城市及区域信息
& & &* @author caizhiming
& & private class ReadJSONFeedTask extends AsyncTask&String, Void, String& {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & @Override
& & & & protected String doInBackground(String... urls) {
& & & & & & // TODO Auto-generated method stub
& & & & & & return readJSONFeed(urls[0]);
& & & & @Override
& & & & protected void onPostExecute(String result) {
& & & & & & // TODO Auto-generated method stub
& & & & & & String strI
& & & & & & try {
& & & & & & & & JSONObject jsonObject = new JSONObject(result);
& & & & & & & & JSONObject resultObject = jsonObject.getJSONObject(&result&);
& & & & & & & & JSONObject addressComponentObject = resultObject
& & & & & & & & & & & & .getJSONObject(&addressComponent&);
& & & & & & & & String city = addressComponentObject.getString(&city&);
& & & & & & & & String district = addressComponentObject.getString(&district&);
& & & & & & & & city = &城市:& +
& & & & & & & & district = & & &区:& +
& & & & & & & & stringBuilder.append(city + district);
& & & & & & & & textView.setText(stringBuilder.toString());
& & & & & & } catch (JSONException e) {
& & & & & & & & // TODO Auto-generated catch block
& & & & & & & & e.printStackTrace();
& & & & & & }
& & &* 请求json数据
& & &* @param url
& & &* @author caizhiming
& & public String readJSONFeed(String url) {
& & & & StringBuilder stringBuilder = new StringBuilder();
& & & & HttpClient client = new DefaultHttpClient();
& & & & HttpGet httpGet = new HttpGet(url);
& & & & HttpR
& & & & try {
& & & & & & response = client.execute(httpGet);
& & & & & & StatusLine statusLine = response.getStatusLine();
& & & & & & int statusCode = statusLine.getStatusCode();
& & & & & & if (statusCode == 200) {
& & & & & & & & HttpEntity entity = response.getEntity();
& & & & & & & & InputStream content = entity.getContent();
& & & & & & & & BufferedReader reader = new BufferedReader(
& & & & & & & & & & & & new InputStreamReader(content));
& & & & & & & & S
& & & & & & & & while ((line = reader.readLine()) != null) {
& & & & & & & & & & stringBuilder.append(line);
& & & & & & & & }
& & & & & & } else {
& & & & & & & & Log.e(&JSON&, &Failed to download file&);
& & & & & & }
& & & & } catch (ClientProtocolException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & } catch (IOException e) {
& & & & & & // TODO Auto-generated catch block
& & & & & & e.printStackTrace();
& & & & return stringBuilder.toString();
【上篇】【下篇】手机谷歌地图依靠移动发过来什么数据定位?是否靠移动发过来的基站的经纬度信息定位?若不是,那移动提供什么信息让谷歌地图定位?因为谷歌不可能知道移动的基站信息.补充:手机不支持GPS,装了谷歌手机地图后,也能定位。
移动在一个范围布一定的基站,这个范围就叫做小区.谷歌这个是根据手机所占用的小区来定位的.因为小区有一定的覆盖范围,所以也只能定个大概位置.一般标示所占用小区本身的基站位置.不需要手机支持GPS.即使是没有SIM卡的手机也能定位,它是通过网络基站和手机信息识别的.网络运营商和谷歌之间有协议没有的SIM绑定,而是和手机本身的信息绑定的.就像112一样,和运营商没有关系,只要有基站,就能使用.
为您推荐:
其他类似问题
扫描下载二维码您没有权限查看该内容.
您可以试试:基站地理定位 API (移动联通) - 基站数据接口 - GPSspg API
QQ: , Skype: crackl168
API接口价格
套餐选项价格请求限制
0 体验测试5.00 积分/天1000 次/天
1 月A150.00 积分/月2000 次/天
2 月B300.00 积分/月5000 次/天
3 月C600.00 积分/月10000 次/天
4 月D1000.00 积分/月50000 次/天
5 月E1999.00 积分/月100000 次/天
6 月F3999.00 积分/月200000 次/天
7 月G7999.00 积分/月500000 次/天
8 月H12000.00 积分/月1000000 次/天
9 月I20000.00 积分/月 次/天
本站扶持开发中的项目,在开发期间的测试,可以免费。你也可以使用本站
,自行搭建基站API平台。
基站地理定位 API (移动联通电信+CDMA)
GPSspg 基站地理定位 API 通过相关参数返回基于基站的客户端位置。通常在不能接受到GPS信号的情况下,用于获得基于基站的粗略位置,精确度取决于客户端设备和基站之间的距离。
相比于其它平台,GPSspg 基站地理定位 API 的特色:可输出供多种地图使用的经纬度坐标,如 Google Earth(WGS84) / Google Maps / 百度地图 / 腾讯高德地图 ;输出6位中国行政区划代码及12位统计用区划代码;使用 DNSpod 域名解析及 Azure 构建平台随时扩充可响应海量请求,为你的业务提高稳定性。
我们对这些请求设置了次数限制(视订阅套餐限制请求次数,见用户后台订阅处),以防出现滥用服务的现象。并且此限制以后可能会在不另作通知的情况下发生变化。此外,我们还设定了请求速率限制,以防滥用此服务。如果您超出了 24 小时限制或以其他方式滥用此服务,API 可能会临时停止运行。如果您继续超出此限制,那么系统将阻止您访问 API。不能注册多个账户使用未充值积分(赠送积分)进行请求,否则你的账户或IP可能被永久锁定。
注意:不能以采集保存结果目的使用此API,否则你的账户或IP可能被永久锁定。
订阅 (开通API)
需要先在用户后台
下面订阅,订阅成功后,在
下面可以看到OID与KEY。一个账户只能订阅一个API。订阅之套餐级别可随时更改。
基站地理定位请求
请求采用以下形式:
/bs/?parameters
支持 GET 或 POST 方式的请求,但所有参数只能通过一种方式传送。
有些参数是必填的,有些则是可选的。根据网址的标准,所有参数均使用和号字符 (&) 进行分隔。下面的列表枚举了这些参数及其可能的值。
参数名含义规则说明必填缺省值
oid订阅 id是
key订阅 key未在控制后台绑定IP或网址时必须传入
type网络类型可选值:gsm、umts、lte、cdma。cdma 时必填。空
bs基站信息
GSM/UMTS: MCC,MNC,LAC,CI 或
MCC,MNC,LAC,CI,dBm
LTE: MCC,MNC,TAC,CI 或
MCC,MNC,TAC,CI,dBm
CDMA: MCC,SID,NID,BID 或
MCC,MNC,TAC,CI,dBm
多基站分隔符号: |
hex进制10进制或16进制,MCC / MNC / dbm 必须为10进制。10
to坐标类型0 WGS84 / GPS坐标,适用于谷歌地球 Google Earth。
1 Google 坐标,适用于 Google Maps 地图模式。
2 百度坐标,适用于百度地图。
3 高德腾讯坐标,适用于高德地图/腾讯地图。
output返回数据格式推荐:json / jsonp / xml,试验性:html / txt 是json
callbackjs 回调函数jsonp 时有效。jQuery 发起 jsonp 跨域请求时会自动附加此参数。callback
参数值范围解释
OID:订阅之OID。在
下面查看。
MCC:移动设备国家代码(Mobile Country Code,MCC),中国 = 460。
MNC:移动设备网络代码(Mobile Network Code,MNC),中国移动 = 00,中国联通 = 01, 中国电信 = 11。
LAC/TAC:1~65535,LTE 时取 TAC。
CI (CELL Identity):
GSM = 1~65535
UMTS = 1~,UMTS CI = RNCID * 65536 + Cell ID,CELL ID = CI mod 65536。
LTE = 1~,LTE CI = eNodBeId * 256 + Cell ID,eNodBeId = CI / 256 取整。
SID:0~32767,SID由国际电联管理分配。CN 号码一共1280个,包括:1)到14335(37FF),共768个;2)到26111(65FF),共512个。
NID:0~65535
BID:1~65535
dBm 信号值:
GSM:RSSI in dBm in the range of -51 to -113 or ASU in the range of 0 to 31。ASU 换算关系:2 * ASU - 113 = dBm 。
UMTS:RSCP in dBm in the range of -25 to -121 or ASU in the range of -5 to 91。ASU 换算关系:ASU - 116 = dBm 。
LTE:RSRP in dBm in the range of -45 to -137 or ASU in the range of 0 to 95。ASU 换算关系:ASU - 140 = dBm 。
CDMA:RSSI in dBm in the range of -75 to -100 or ASU in the range of 1 to 16:
&&&&RSSI [dBm] >= -75: ASU = 16,
&&&&RSSI [dBm] >= -82: ASU = 8,
&&&&RSSI [dBm] >= -90: ASU = 4,
&&&&RSSI [dBm] >= -95: ASU = 2,
&&&&RSSI [dBm] >= -100: ASU = 1
基站地理定位 API 结果响应
返回的结果响应格式由网址请求的参数中的 output 标记指定。默认为json。
返回结果中的 lat lng 对应请求参数 to 的坐标类型。当 to=0(GPS坐标) 时,会附加一个 lats/lngs,用于 Google 地图模式下显示用坐标。当 to=1(Google 地图模式坐标)时,会附加一个 lats/lngs,用于 Google Maps 卫星图模式下显示用坐标。
返回结果中的 roads 少部份可能无结果会空。
返回结果中的 match:1 = 匹配,2 = 推算,8 = 国家。
字段名描述示例说明
status状态码200=OK, 404=未收错, 其它=错误。
msg状态消息ok
match结果匹配级别1 = 匹配,2 = 推算,8 = 国家。
latitude纬度多基站定位请求时为综合计算结果。
longitude经度多基站定位请求时为综合计算结果。
以下为列表结果
radius覆盖半径参考值如:1500 米。
address靠近地址描述云南省西双版纳傣族自治州景洪市嘎洒镇西双版纳金星啤酒有限公司
roads靠近道路描述026乡道西约536米
以下为 MCC = 460 时列表独有结果
rid6位行政区划代码532801,见国家统计局《县及县以上行政区划代码》。
rids12位区划代码,参考值,见国家统计局《统计用区划代码和城乡划分代码》。
lats附带纬度to = 0 或 1 时返回。
lngs附带经度to = 0 或 1 时返回。
JSON 输出格式
在此示例中,查询请求了 json 响应:
/bs/?oid=我订阅的oid&bs=460,01,9&output=json
此请求返回的 JSON 如下所示:请注意,实际的 JSON 可能包含较少的空白。您不应假定请求之间的空白数量或格式。
"status": 200,
"msg": "ok",
"count": 1,
"result": [
"id": "460-001-409",
"lat": "39.",
"lng": "116.",
"radius": "670",
"address": "北京市朝阳区望京街道方恒购物中心",
"roads": "望京小街西北约49米",
"lats": "39.989763",
"lngs": "116.481719",
"rid": "110105",
"rids": ""
"latitude": "39.",
"longitude": "116.",
"match": "1"
JSONP 输出格式
JSONP是一个非官方的协议,它允许在服务器端集成 Script tags 返回至客户端,通过 javascript callback 的形式实现跨域访问(这仅仅是 JSONP 简单的实现形式)。
在此示例中,我们使用 JQuery 查询请求 jsonp 响应:
var o_r = [];
//请求成功的处理
function showAjaxOK() {
//判断状态是否成功
if (o_r.status == 200) {
//成功后的处理显示位置等
if (o_r.status == 404) {
//没有收录此数据的处理
//请求参数及其它错误的处理
//请求失败的处理
function showAjaxError() {
function ajaxGetBS() {
type: "get",
async: false,
url: "/bs/?oid=我订阅的oid&bs=460,00,&to=1&output=jsonp",
dataType: "jsonp",
success: function (results) { o_r = showAjaxOK(); },
error: function () { showAjaxError(); }
最终 JQuery 发起的 JSONP 请求 URL :
/bs/?oid=我订阅的oid&bs=460,00,&to=1&output=jsonp&callback=jQuery&_=0
此请求返回的 文本 如下所示:请注意,实际的 文本 可能包含较少的空白。您不应假定请求之间的空白数量或格式。
jQuery&&jQuery({
"status": 200,
"msg": "ok",
"count": 1,
"result": [
"id": "460-000-041",
"lat": "22.016220",
"lng": "100.749283",
"radius": "1500",
"address": "云南省西双版纳傣族自治州景洪市景洪工业园区万达西双版纳国际度假区",
"roads": "026乡道西约535米",
"lats": "22.",
"lngs": "100.",
"rid": "532801",
"rids": ""
"latitude": "22.016220",
"longitude": "100.749283",
"match": "1"
XML 输出格式
在此示例中,查询请求了 xml 响应:
/bs/?oid=我订阅的oid&bs=460,01,9&to=1&output=xml
此请求返回的 XML 如下所示:
&?xml version="1.0" encoding="utf-8" ?&
&Response&
&status&200&/status&
&msg&ok&/msg&
&count&1&/count&
&latitude&39.&/latitude&
&longitude&116.&/longitude&
&match&1&/match&
&id&460-001-409&/id&
&lat&39.&/lat&
&lng&116.&/lng&
&radius&670&/radius&
&address&北京市朝阳区望京街道方恒购物中心&/address&
&roads&望京小街西北约49米&/roads&
&lats&39.989763&/lats&
&lngs&116.481719&/lngs&
&rid&110105&/rid&
&rids&&/rids&
&/results&
&/Response&
结果响应状态码
建议:在检查状态码 status = 200 后再处理相关结果。
status错误描述备注
100站点数据维护中
110参数格式错误一般为正则校验错误:字符、长度。
120参数校验错误一般为数据值范围或可选值错误。
300执行数据查询时出错
404未收录此数据
701未订阅该api服务订阅后才可以使用
702订阅过期继续订阅
709违规暂停账户违规锁定或因违规当天暂停
900拒绝请求KEY不正确或IP/网址未绑定
901超过套餐限额可第二天使用或升级套餐
& 2016 GPSspg -

我要回帖

更多关于 中国移动手机定位 的文章

 

随机推荐