2013-03-17 89 views
0

是沒有得到執行下面的源代碼...我學習如何處理谷歌地圖。請幫助谷歌地圖代碼關閉

這是我的源代碼::

package com.example.maptest; 

import android.os.Bundle; 
import android.location.*; 
import android.content.Context; 
import android.view.Menu; 
import com.google.android.maps.*; 


public class MainActivity extends MapActivity 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Context context = getApplicationContext(); 

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

    Location location = null; 

    double lat = location.getLatitude() * 100000; 
    double longi = location.getLongitude() * 100000; 


    LocationProvider provider = 
      locationManager.getProvider(LocationManager.NETWORK_PROVIDER); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

這是XML文件

<com.google.android.maps.MapView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:apiKey="0GH71P-8YZB_XmnfIDs_-NOCtdlku2nwKABE61Q" 
      /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="32dp" 
    android:ems="10" 
    android:inputType="textPersonName" > 

    <requestFocus /> 
</EditText> 

</RelativeLayout> 

我AndroidManifest是::

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.maptest" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.maptest.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <uses-library android:name="com.google.android.maps" /> 
</application> 

我真的感到困惑,爲什麼它沒有啓動...請幫助

03-17 08:34:05.215: W/dalvikvm(2380): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
03-17 08:34:05.235: E/AndroidRuntime(2380): FATAL EXCEPTION: main 
03-17 08:34:05.235: E/AndroidRuntime(2380): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.maptest/com.example.maptest.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.maptest.MainActivity" on path: /data/app/com.example.maptest-2.apk 
03-17 08:34:05.235: E/AndroidRuntime(2380): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:210) 
+0

堆棧跟蹤將有所幫助。 – meh 2013-03-17 08:28:38

+0

@pratik Ghate試試我的解決方案。 – 2013-03-17 08:29:19

+0

@pratik Ghate你應該使用谷歌地圖api v2。 – meh 2013-03-17 08:45:39

回答

0

你沒有初始化的位置。所以我猜你得到NPE

Location location = getGPSLocation(this); 
if(location != null) { 
    double lat = location.getLatitude() * 100000; 
    double longi = location.getLongitude() * 100000; 
} 

編輯:

private Location getGPSLocation(Context context) { 
    try { 
     LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     Criteria cr = new Criteria(); 
     cr.setCostAllowed(true); 
     cr.setAccuracy(Criteria.NO_REQUIREMENT); 
     cr.setPowerRequirement(Criteria.NO_REQUIREMENT); 
     String provider = lm.getBestProvider(cr, true); 
     if(provider == null) 
      provider = lm.getBestProvider(cr, false); 
     return lm.getLastKnownLocation(provider); 
    } 
    catch(Exception e) { 
     Log.e("App", "Exception while fetch GPS at: " + e.getMessage()); 
    } 
    return null; 
} 

,並添加此權限的AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
+0

它沒有解決問題..你能幫助我嗎? – 2013-03-17 08:32:31

+0

@pratikGhate我認爲你的NPE異常已經解決了,你沒有初始化位置。任何方式請張貼logcat。 – 2013-03-17 08:33:53

+0

這是我的logcat – 2013-03-17 08:37:14

2
Location location = null; 

double lat = location.getLatitude() * 100000; 
double longi = location.getLongitude() * 100000; 

你調用一個空引用的方法,沒有不知道你的應用程序崩潰了。您應該初始化location變量,例如調用LocationManager.getLastKnownLocation()。希望這可以幫助。

+0

它沒有解決我的問題.. – 2013-03-17 08:46:24

+0

@pratikGhate,什麼沒有解決你的問題? – Egor 2013-03-17 09:16:43

+0

將位置變量初始化爲LocationManager.getLastKnownLocation() – 2013-03-17 09:22:38