发送手机扣扣怎么群发消息位置消息无法获取经纬度怎么回事

我的苹果5SQQ定位经纬度失败是什么问题_百度知道
我的苹果5SQQ定位经纬度失败是什么问题
我的苹果5SQQ定位经纬度失败是什么问题
好,很可能你所在的地区没有定位数据信息吧,地点信息不够,请采纳
来自团队:
其他类似问题
为您推荐:
经纬度的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁iOS 问题:朋友们,不知道有没做过这样的demo呢。就是后台实时获取你位置的经纬度,然后发送给服务器呢。谢谢! -
朋友们,不知道有没做过这样的demo呢。就是后台实时获取你位置的经纬度,然后发送给服务器呢。谢谢!
共有 5 个回答
这个不难吧,iOS自带有获取当前位置的API,然后再将位置经纬度通过http协议(Post)传回给服务器,应该就是这样的流程呢。
登录后方可回复
后台的也可以吗,就有点类似追踪的了。有小demo参考下吗。谢谢了
登录后方可回复
这么具体的demo还真没有。不过你可以看看这份代码,参考一下如何写后台(一直)运行的功能:&br /&&a href=&/codesample/4fb5e7c0f000000& class=&c4alink& target=&_blank&&/codesample/4fb5e7c0f000000&/a&
登录后方可回复
好的,谢谢!&br /&据我了解是这样的,不知有错没?google map放在后台都不会继续定位,要程序重新唤起时及时更新位置...是不是这样的呢
登录后方可回复
要不断去调用定位的api的。。。
登录后方可回复
登录后方可回答如何通过经纬度获取地址信息_百度知道
如何通过经纬度获取地址信息
提问者采纳
1. 什么是网络服务?Google Maps API 提供这些网络服务作为从外部服务中请求 Google Maps API 数据以及在您的地图应用程序中使用它们的接口。这些网络服务使用特定网址的 HTTP 请求并将网址参数作为参数提供给服务。一般来讲,这些服务会在 HTTP 请求中以 JSON 或 XML 的形式传回数据,供您的应用程序进行解析和/或处理。一个典型的网络服务请求通常采用以下形式:htt p:/ /maps.g oogl e.co m/maps/api/service/output?parameters其中 service 表示所请求的特定服务,output 表示响应格式(通常为 json 或 xml)。2.地址解析与反地址解析地址解析是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,您可以根据转换得到的坐标放置标记或定位地图。Google Geocoding API 可让您通过 HTTP 请求直接访问地址解析器。此外,该服务还可让您执行反向操作(将坐标转换为地址),此过程称为“反向地址解析”(地址查询)。3. 地址查询(反向地址解析)请求Google Geocoding API 请求必须采用以下形式:htt p:/ /maps.g oogl e.c om/maps/api/geocode/output?parameters其中,output 可以是以下值之一:json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出xml 表示以 XML 的形式输出有些参数是必需的,有些是可选的订钉斥固俪改筹爽船鲸。根据网址的标准,所有参数均使用字符 & (&) 分隔。下面枚举了这些参数及其可能的值。Google Geocoding API 使用以下网址参数定义地址查询请求:latlng(必需)- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。bounds(可选)- 要在其中更显著地偏移地址解析结果的可视区域的边框。region(可选)- 区域代码,指定为 ccTLD(“顶级域”)双字符值。language(可选)- 传回结果时所使用的语言。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,地址解析器将尝试尽可能使用发送请求的区域的本地语言。sensor(必需)- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。注意:bounds 和 region 参数只会影响地址解析器返回的结果,但不能对其进行完全限制。实例一:创建查询坐标(39..403945)的地址信息的请求,要求以xml格式输出响应,语言为简体中文(zh-CN)。注意:经纬度书写的顺序为(纬度,经度)。实例二:利用C#在客户端程序中创建上述请求。1 WebClient client = new WebClient();2 string url = &htt p:/ /m aps.g oogl e.co m/maps/api/geocode/xm l?latln g=39.910 &093,116.403945&language=zh-CN&sensor=false&;3 client.Encoding = Encoding.UTF8;4 string responseTest = client.DownloadString(url);5. 地址查询(反向地址解析)响应地址解析响应将以网址请求路径中的 output 标记所指示的格式传回。XML 响应包含一个 &GeocodeResponse&和两个顶级元素:&status& 包含请求中状态代码。(非常重要)零或多个 &result& 元素,每个元素都包含单独的一组地址解析地址信息和几何图形信息。地址解析响应对象中的 &status& 字段包含请求的状态,并且可能包含调试信息,以帮助您追溯地址解析未正常工作的原因。&status& 字段可能包含以下值:&OK& 表示未发生错误;地址成功进行了解析并且至少传回了一个地址解析结果。(判断请求是否成功响应)&ZERO_RESULTS& 表示地址解析成功,但未返回结果。如果地址解析过程中传递的偏远位置 address 或 latlng 并不存在,则会出现这种情况。&OVER_QUERY_LIMIT& 表示您超出了配额。&REQUEST_DENIED& 表示您的请求被拒绝,通常是由于缺少 sensor 参数。&INVALID_REQUEST& 通常表示缺少查询参数(address 或 latlng)。实例一:在IE浏览中输入上述实例一中的请求,查看响应结果。浏览器中显示如下信息(该截图只是响应结果的部分信息):实例二:通过控制台输出上述实例二的响应。C#代码:1 using S 2 using System.Collections.G 3 using System.L 4 using System.T 5 using System.N 6
7 namespace GeoCodeTest 8 { 9 & & class Program10 & & {11 & & & & static void Main(string[] args)12 & & & & {13 & & & & & & WebClient client = new WebClient();14 & & & & & & string url = &ht tp:/ /maps.go ogle.c om/maps/a pi/geocode/xml?latlng=39..403945&language=zh-CN&sensor=false&;15 & & & & & & client.Encoding = Encoding.UTF8;16 & & & & & & string responseTest = client.DownloadString(url);17 18 & & & & & & Console.Write(&{0}&,responseTest);19 20 & & & & & & Console.Read();21 22 & & & & }23 & & }24 }输出结果(该截图只是响应结果的部分信息):5. 处理响应结果通过上述内容,我们已经能够得到xml响应信息。但是,响应结果包含很多信息,因此我们需要解析出需要的地址信息。具体实现过程为:第一步:判断status的状态信息。第二步:获取formatted_address 地址信息。注意:formatted_address是一个字符串,包含此位置的人类可读地址。通常该地址相当于“邮政地址”,有时会因不同国家/地区而存在差异。实现代码如下:View Code
其他类似问题
为您推荐:
经纬度的相关知识
其他1条回答
下载gps工具箱,非常好用
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页面&#x91载开启
页面&#x91载开启 欢&#x8光临本站,页面正在&#x91新载入,请稍候 ...Android获取当前位置的经纬度数据
投稿:lijiao
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android获取当前位置的经纬度数据的相关资料,需要的朋友可以参考下
现在有这么一个需求:开启一个Service服务,获取当前位置的经纬度数据,将获取的数据以广播的方式发送出去,注册广播的Activity接收广播信息,并将接收到的数据在当前Activity显示,如果当前位置发生变化,经纬度数据改变,获取改变后的经纬度数据,通过Handler发送消息,更新UI界面,显示更新后的内容,请问这样子的Demo该如何实现?
LocationTool获取当前位置信息
Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在LocationTool中返回Location、LocationManager两者对象,通过Location提供的getLatitude()、getLongitude()读取经纬度数据,同时添加位置改变监听器MyLocationListener,具体代码如下:
package cn.teachcourse.
import android.app.A
import android.content.C
import android.content.I
import android.location.C
import android.location.L
import android.location.LocationL
import android.location.LocationM
import android.os.B
import android.provider.S
import android.widget.T
@date 创建于:
public class LocationTool {
public Location getLocation() {
public void setLocation(Location location) {
this.mLocation =
private Location mL
private LocationManager mLocationM
public LocationTool(Context context) {
mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
mLocation = mLocationManager.getLastKnownLocation(getProvider());
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
2000, 10, new MyLocationListener(this));
// 获取Location Provider
private String getProvider() {
// 构建位置查询条件
Criteria criteria = new Criteria();
// 查询精度:高
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 是否查询海拨:否
criteria.setAltitudeRequired(false);
// 是否查询方位角 : 否
criteria.setBearingRequired(false);
// 是否允许付费:是
criteria.setCostAllowed(true);
// 电量要求:低
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 返回最合适的符合条件的provider,第2个参数为true说明 , 如果只有一个provider是有效的,则返回当前provider
return mLocationManager.getBestProvider(criteria, true);
public LocationManager getLocationManager() {
return mLocationM
private LocationListener mLocationListener = new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
public void onProviderEnabled(String provider) {
Location l = mLocationManager.getLastKnownLocation(provider);
if (l != null) {
mLocation =
public void onProviderDisabled(String provider) {
mLocation =
public void onLocationChanged(Location location) {
if (location != null) {
mLocation =
public void closeLocation() {
if (mLocationManager != null) {
if (mLocationManager != null) {
mLocationManager.removeUpdates(mLocationListener);
mLocationListener =
mLocationManager =
MyLocationListener位置改变监听器
LocationManager对象调用requestLocationUpdates(String provider, long minTime, float minDistance,LocationListener listener),在回调的方法中获取改变后的Location对象,其中provider表示LocationManager.GPS_PROVIDER,minTime表示最短时间间隔内更新位置信息(单位毫秒),minDistance表示最短距离内更新位置信息(单位米),MyLocationListener继承LocationListener,需要重写的方法如下:
package cn.teachcourse.
import android.location.L
import android.location.LocationL
import android.os.B
@date 创建于:
public class MyLocationListener implements LocationListener {
private LocationTool gpsT
/**构造方法,传入LocationTool
* @param gpsTool
public MyLocationListener(LocationTool gpsTool) {
this.gpsTool = gpsT
* 当前位置改变后,回调onLocationChanged方法,获取改变后的Location对象
public void onLocationChanged(Location location) {
if (location != null) {
gpsTool.setLocation(location);
* 当provider状态改变时回调的方法,当前的provider无法读取位置信息或者provider从无法读取位置信息变为能够读取为信息被回调的方法
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
* 当provider被用户允许开启,回调的onProviderEnabled方法,比如:开启定位功能,回调该方法
public void onProviderEnabled(String provider) {
Location l = gpsTool.getLocationManager()
.getLastKnownLocation(provider);
if (l != null) {
gpsTool.setLocation(l);
* 当provider不被用户允许开启,回调的onProviderDisabled方法,比如:无法开启定位功能,回调该方法
public void onProviderDisabled(String provider) {
gpsTool.setLocation(null);
LocationService服务读取位置信息
为什么要开启Service呢?Service和Activity、Fragment一样也有自己的生命周期,onCreate——&onStartCommand(onStart)——&onUnbind——&onRebind——&onDestroy,在LocationService执行的操作是启动一个线程获取更新后的位置信息,并以广播的方式发送出去,具体代码如下:
package cn.teachcourse.
import android.app.A
import android.app.S
import android.content.C
import android.content.I
import android.location.L
import android.location.LocationM
import android.os.IB
import android.provider.S
import android.widget.T
@date 创建于:
public class LocationService extends Service {
private LocationTool mGPSTool =
private boolean threadDisable =
private final static String TAG = LocationService.class.getSimpleName();
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
mGPSTool = new LocationTool(this);
startThread();
private void startThread() {
new Thread(new Runnable() {
public void run() {
while (!threadDisable) {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
if (mGPSTool != null) { // 当结束服务时gps为空
// 获取经纬度
Location location = mGPSTool.getLocation();
// 发送广播
Intent intent = new Intent();
intent.putExtra("lat",
location == null ? "" : location.getLatitude()
intent.putExtra("lon",
location == null ? "" : location.getLongitude()
intent.setAction("cn.teachcourse.utils.GPSService");
sendBroadcast(intent);
}).start();
public void onDestroy() {
super.onDestroy();
threadDisable =
if (mGPSTool != null) {
mGPSTool.closeLocation();
mGPSTool =
public IBinder onBind(Intent intent) {
MainActivity启动服务、注册广播、显示位置信息
在MainActivity需要做的事情有:第一启动LocationService服务,调用startService()方法;第二注册广播接收器(BroadcastReceiver),创建了一个内部类MyBroadcastReceiver,继承BroadcastReceiver,重写onReceive方法;第三获取经纬度数据,更新UI界面,显示当前位置信息,具体代码如下:
//启动服务
startService(new Intent(this, LocationService.class));
//注册广播
private class MyReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String lon = bundle.getString("lon");
String lat = bundle.getString("lat");
if (!TextUtils.isEmpty(lon) && !TextUtils.isEmpty(lat)) {
mLatitude =
mLongitude =
isObtainLoc =
new Thread(new Runnable() {
public void run() {
Message msg = new Message();
msg.what = REFRESH_UI;// 发送消息,通知刷新界面
mHandler.sendMessage(msg);
}).start();
//更新UI界面
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case REFRESH_UI:
reFreshUI();
private void reFreshUI() {
if (isObtainLoc) {
mTextView.setText("目前经纬度\n经度:" + mLongitude + "\n纬度:" + mLatitude);
mDialog.dismiss();
以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 手机扣扣怎么群发消息 的文章

 

随机推荐