현재 위치를 위성으로 부터 받아서  마커 표시 후 특정 위치 마커 표시하려고 합니다.

제가 초보라 이 문제를 어떻게 해결 해야 할지 모르겠네요.


안드로이드 3.0 (google api)


NullpointerExcption 에러 인데;; 정말 모르겠네요;


-------------------------------------------------------------------


package dblab.gp;


import java.util.ArrayList;

import java.util.List;


import android.graphics.Canvas;

import android.graphics.drawable.Drawable;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.widget.ImageView;

import android.widget.Toast;


import com.google.android.maps.GeoPoint;

import com.google.android.maps.ItemizedOverlay;

import com.google.android.maps.MapActivity;

import com.google.android.maps.MapController;

import com.google.android.maps.MapView;

import com.google.android.maps.MapView.LayoutParams;

import com.google.android.maps.OverlayItem;


public class MapoverlayActivity extends MapActivity implements LocationListener {


MapView mMapview;

MapController mMC;

LocationManager lm = null;

String mProvider;

GeoPoint mMyloc;


/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);


mMapview = (MapView) findViewById(R.id.mapview);


MapView.LayoutParams mapLayoutParams_myloc = new MapView.LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, mMyloc,

MapView.LayoutParams.CENTER);

ImageView myloc = new ImageView(getApplicationContext());

myloc.setImageResource(R.drawable.ic_launcher);

mMapview.addView(myloc, mapLayoutParams_myloc);


Drawable marker_yewon = getResources().getDrawable(

R.drawable.blue_marker);

marker_yewon.setBounds(0, 0, marker_yewon.getIntrinsicWidth(),

marker_yewon.getIntrinsicHeight());

mMapview.getOverlays().add(new SitesOverlay(marker_yewon));

mMC = mMapview.getController();

mMC.setCenter(mMyloc);

mMC.setZoom(17);

mMapview.setBuiltInZoomControls(true);

lm.requestLocationUpdates(mProvider, 1000, 10, MapoverlayActivity.this);

}


@Override

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

double lat = location.getLatitude();

double lon = location.getLongitude();

mMyloc = getpoint(lat , lon );

}


private GeoPoint getpoint(double lat, double lon) {

return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0)));

}


@Override

protected boolean isRouteDisplayed() {

// TODO Auto-generated method stub

return false;

}


public class SitesOverlay extends ItemizedOverlay<OverlayItem> {

Drawable marker_yewon = null;

List<OverlayItem> items = new ArrayList<OverlayItem>();


public SitesOverlay(Drawable marker_yewon) {

super(marker_yewon);

this.marker_yewon = marker_yewon;

// TODO Auto-generated constructor stub

items.add(new OverlayItem(getpoint(37.1805751, 128.2038425), "한식",

"예원"));

populate();

}


@Override

protected OverlayItem createItem(int i) {

// TODO Auto-generated method stub

return items.get(i);

}


@Override

public void draw(Canvas canvas, MapView mapView, boolean shadow) {

// TODO Auto-generated method stub

super.draw(canvas, mapView, shadow);

boundCenter(marker_yewon);

}


@Override

protected boolean onTap(int i) {

// TODO Auto-generated method stub

Toast.makeText(MapoverlayActivity.this, items.get(i).getSnippet(),

Toast.LENGTH_SHORT).show();


return true;


}


@Override

public int size() {

// TODO Auto-generated method stub

return items.size();

}


}


@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub


}


@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub


}


@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

// TODO Auto-generated method stub


}

}

---------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="dblab.gp"

    android:versionCode="1"

    android:versionName="1.0" >


    <uses-sdk android:minSdkVersion="11" />

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

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

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

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


    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        <activity

            android:name=".MapoverlayActivity"

            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" android:required="true"/>

    </application>


</manifest>

---------------------------------------------------------------------------------------------------------------------


04-07 21:41:11.640: E/AndroidRuntime(4872): FATAL EXCEPTION: main

04-07 21:41:11.640: E/AndroidRuntime(4872): java.lang.RuntimeException: Unable to start activity ComponentInfo{dblab.gp/dblab.gp.MapoverlayActivity}: java.lang.NullPointerException

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1818)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread.access$500(ActivityThread.java:122)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.os.Handler.dispatchMessage(Handler.java:99)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.os.Looper.loop(Looper.java:132)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread.main(ActivityThread.java:4126)

04-07 21:41:11.640: E/AndroidRuntime(4872): at java.lang.reflect.Method.invokeNative(Native Method)

04-07 21:41:11.640: E/AndroidRuntime(4872): at java.lang.reflect.Method.invoke(Method.java:491)

04-07 21:41:11.640: E/AndroidRuntime(4872): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)

04-07 21:41:11.640: E/AndroidRuntime(4872): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)

04-07 21:41:11.640: E/AndroidRuntime(4872): at dalvik.system.NativeStart.main(Native Method)

04-07 21:41:11.640: E/AndroidRuntime(4872): Caused by: java.lang.NullPointerException

04-07 21:41:11.640: E/AndroidRuntime(4872): at com.google.android.maps.MapController.setCenter(MapController.java:345)

04-07 21:41:11.640: E/AndroidRuntime(4872): at dblab.gp.MapoverlayActivity.onCreate(MapoverlayActivity.java:58)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)

04-07 21:41:11.640: E/AndroidRuntime(4872): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)

04-07 21:41:11.640: E/AndroidRuntime(4872): ... 11 more