【问题标题】:how to get longitude latitude in android app如何在android应用程序中获取经度纬度
【发布时间】:2014-03-28 20:46:44
【问题描述】:

我正在创建一个应用程序,我必须在其中获取用户的经度和纬度并标记他的位置。我的应用程序出现错误“不幸的是地图已停止”。我搜索了很多但无法找到解决方案。这是我的代码和我的日志猫。

  public class MapView extends Activity {

    private LocationManager locationManager;
    private String best;
    double myLocationLatitude;
    double myLocationLongitude;

    Location loc = locationManager.getLastKnownLocation(best);
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_layout);

        locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

        // additionally (you have to implement LocationListener)
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0.0f, new android.location.LocationListener()
        {

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                 Log.d("a","onLocationChanged: lat=" +location.getLatitude());
                 Log.d("a","onLocationChanged: lat=" +location.getLongitude());
            }
        });

        locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);


    GoogleMap mMap = null;
    mMap.addMarker(new MarkerOptions().draggable(true)
                                      .position(new LatLng(loc.getLatitude(),loc.getLongitude()))
                                      .title("YOUR LOCATION"));

日志猫:

03-29 01:37:37.167: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41fb9070noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:37.364: D/dalvikvm(2521): GC_FOR_ALLOC 释放 870K, 13% 免费6526K/7424K,暂停110ms,共110ms 03-29 01:37:37.365: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41fc0078noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:37.637: E/链接器(2521): load_library(linker.cpp:757): 图书馆 “/data/data/com.google.android.gms/files/libAppDataSearchExt_armeabi_v7a.so” 未找到 03-29 01:37:37.642: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41f7ffd8noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:37.833:​​ D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41ea8d40noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:38.324: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41f19948noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:38.645: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41fa1000noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:38.658: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41ee72b0noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:38.668:I/Icing(2521):内部初始化完成:存储状态 0 03-29 01:37:38.725: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@41f7a920noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:38.755: I/Icing(2521): 初始化后完成 03-29 01:37:38.879: W/asset(2521):AssetManager-->addDefaultAssets CIP 路径不存在! 03-29 01:37:40.148: I/dalvikvm(2521): 找不到方法 android.app.admin.DevicePolicyManager.isDeviceOwnerApp,引用 从方法 com.google.android.gms.init.InitializeIntentService.onHandleIntent 03-29 01:37:40.148: W/dalvikvm(2521): VFY: 无法解析虚拟 方法 1697:Landroid/app/admin/DevicePolicyManager;.isDeviceOwnerApp (Ljava/lang/String;)Z 03-29 01:37:40.148: D/dalvikvm(2521): VFY: 将操作码 0x6e 替换为 0x00e0 03-29 01:37:40.903: I/Icing(2521): 索引 38E683E5680B78374039C38CC697D19B079F6A63 来自 com.google.android.googlequicksearchbox 03-29 01:37:41.108: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@420511f0noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:41.505: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@420542a0noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:41.520: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@42055cb8noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:41.534: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@42058ce8noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:41.546: D/ActivityThread(2521): installProvider: 上下文=android.app.ContextImpl@41e4f100holder=android.app.IActivityManager$ContentProviderHolder@4205a700noisy=truenoReleaseNeeded=falsestable=false 03-29 01:37:41.554: I/Icing(2521): 索引完成 38E683E5680B78374039C38CC697D19B079F6A63 03-29 01:37:44.889: D/IPCThreadState(2521):[DN #5] BR_CLEAR_DEATH_NOTIFICATION_DONE cookie 0x41263ee8

【问题讨论】:

  • 需要初始化locationManager。
  • 我试过了,但错误没有解决。
  • 请用您尝试过的内容更新您的问题。在初始化之前确保你没有使用locationManager。 (Location loc = locationManager.getLastKnownLocation(best); 就是一个很好的例子)
  • 您可以简单地将private LocationManager locationManager; 行替换为private LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); (但这可能会产生意想不到的冲突)
  • 您还引用了一个未初始化的String best,这会在您清理locationManager 部分后导致问题。

标签: java android google-maps


【解决方案1】:

您是否已将您的活动添加到您的 android 清单中?

如果我忘记将其添加到清单中,我也会收到此错误。

http://developer.android.com/guide/topics/manifest/manifest-intro.html

【讨论】:

  • 我已经添加了我的活动,但它仍然给出错误。
  • 好的...您是否将谷歌地图的开发人员代码添加到您的代码中?如果没有添加代码,我通常只会得到一张没有内容的地图。第二个想法:你有 GoogleMap mMap = null,然后你尝试添加一些东西。这在 Java 编码中不起作用
  • 如果您的 xml 文件中包含地图,请查看如下编码:GoogleMap map = ((MapFragment) getFragmentManager() .findFragmentById(R.id.map)).getMap();
【解决方案2】:

您还需要授予您的应用访问 GPS 的权限。

只要放线

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

进入你的清单,一切都会好起来的。

另见

ACCESS_FINE_LOCATION AndroidManifest Permissions Not Being Granted

【讨论】:

  • 那么它可能是 dcharms 提到的。由于您在方法体外部调用变量,因此必须在方法体外部以及在使用之前对其进行初始化。否则,您将引用一个空变量
猜你喜欢
  • 2012-11-02
  • 2012-06-30
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多