위치기반으로 자기위치잡고 특정위치에 마커 띄우는 소스입니다.

갤럭시s로 테스트 하고있는데 gps를 끈 상태에서는 현재위치에 약간에 오차가있지만

잘 작동합니다.

근데 gps를 킨상태에서 실행시키면 오류가 발생합니다. 도무지 모르겠습니다.

좀봐주신다면 정말로 감사하겠습니다 ㅠㅠㅠ 아 어디 도움요청할곳이없네요..

logCat에서 나온  at sol.samtle.EventMap.onCreate(EventMap.java:285) 이부분은

소스를 쭉내려보신다면 빨간색+bold등등 딱 눈에 띄게해놨습니다.

도저히 감안잡히고 급해서 소스 전문을 올립니다 좀 많이 길지만 양해부탁드립니다 ㅠ



                            logCat


09-02 17:26:17.314: ERROR/AndroidRuntime(3944): FATAL EXCEPTION: main

09-02 17:26:17.314: ERROR/AndroidRuntime(3944): java.lang.RuntimeException: Unable to start activity ComponentInfo{sol.samtle/sol.samtle.EventMap}: java.lang.NullPointerException

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2668)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread.access$2300(ActivityThread.java:126)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.os.Handler.dispatchMessage(Handler.java:99)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.os.Looper.loop(Looper.java:123)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread.main(ActivityThread.java:4632)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at java.lang.reflect.Method.invokeNative(Native Method)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at java.lang.reflect.Method.invoke(Method.java:521)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at dalvik.system.NativeStart.main(Native Method)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944): Caused by: java.lang.NullPointerException

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at sol.samtle.EventMap.onCreate(EventMap.java:285)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2632)

09-02 17:26:17.314: ERROR/AndroidRuntime(3944):     ... 11 more












                                        .java소스








package sol.samtle;


import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;


import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.protocol.HTTP;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserFactory;


import android.app.Activity;

import android.app.AlertDialog;

import android.content.ContentValues;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.drawable.Drawable;

import android.location.Criteria;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageButton;

import android.widget.Toast;


import com.google.android.maps.GeoPoint;

import com.google.android.maps.MapActivity;

import com.google.android.maps.MapController;

import com.google.android.maps.MapView;

import com.google.android.maps.Overlay;

import com.google.android.maps.OverlayItem;


public class EventMap extends MapActivity implements View.OnClickListener, DialogInterface.OnClickListener{

 

 

 

 

 private static final String TAG = EventMap.class.toString();

 private static boolean result = false;

 private String favor;

 private LocationManager locationManager;

 private String provider;

 private Location location;

 

 private MapController mapController;

 private MapView mapView

 

 private GeoPoint favPoint

 private GeoPoint searchPoint;

 

 boolean isExist=false;

 SQLiteDatabase db;

 Double dbin_latdbin_lngdbout_latdbout_lng;

 static EditText searchText;

 Double searchLatsearchLng;

 ArrayList<String> stName = new ArrayList<String>();

 ArrayList<String> stCity = new ArrayList<String>();

 ArrayList<String> stGu = new ArrayList<String>();

 ArrayList<String> proDc = new ArrayList<String>();

 ArrayList<String> proExplain = new ArrayList<String>();

 ArrayList<String> stPhone = new ArrayList<String>();

 ArrayList<Double> stLat = new ArrayList<Double>();

 ArrayList<Double> stLng = new ArrayList<Double>();

 ArrayList<String> stImg = new ArrayList<String>();

 ArrayList<String> stCt = new ArrayList<String>();

 ArrayList<String> stComp = new ArrayList<String>();

 ArrayList<String> stUrl = new ArrayList<String>();




     


 

 

 

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

  @Override


  public boolean onCreateOptionsMenu(Menu menu){

   super.onCreateOptionsMenu(menu);

   menu.add(0,1,0,"즐겨찾기(1)으로 이동");

   menu.add(0,2,0,"즐겨찾기(2)으로 이동");

   menu.add(0,3,0,"즐겨찾기(3)으로 이동");

   SubMenu etc = menu.addSubMenu("현재위치 저장");

   etc.add(0,4,0,"즐겨찾기(1)에 저장");

   etc.add(0,5,0,"즐겨찾기(2)에 저장");

   etc.add(0,6,0,"즐겨찾기(3)에 저장");

   

   openDatabase();

    

   

   

   

   return true;

  }

  

  public boolean onOptionsItemSelected(MenuItem item){

   //mapView = (MapView) findViewById(R.id.mapview1);

   

   switch (item.getItemId()){

   case 1:

    favor="favo1";

    useCursor1();

    if(isExist){

     mapController.animateTo(favPoint);

     mapController.setZoom(17);

     Toast.makeText(this,"즐겨찾기1로 이동합니다. ",3000).show(); //즐겨찾기(1)로 e동함수

    }

    return true;

   case 2:

    favor="favo2";

    useCursor1();

    if(isExist){

     mapController.animateTo(favPoint);

     mapController.setZoom(17);

     Toast.makeText(this,"즐겨찾기2로 이동합니다. ",3000).show();

    }

    return true;

   case 3:

    favor="favo3";

    useCursor1();

    if(isExist){

     mapController.animateTo(favPoint);

     mapController.setZoom(17);

     Toast.makeText(this,"즐겨찾기3로 이동합니다. ",3000).show();

    }

    return true;

   case 4:

    

    GeoPoint centerPoint1 = mapView.getProjection().fromPixels(mapView.getWidth()/2, mapView.getBottom()/2);

          int lat1=(int)centerPoint1.getLatitudeE6();  //즐겨찾기(1)에 넣을 위도값 = lat1

          int lng1=(int)centerPoint1.getLongitudeE6();//즐겨찾기(1)에 넣을 경도값 = lat2

          favor="favo1"

          if(location != null){

           dbin_lat = (double)lat1;

           dbin_lng = (double)lng1;

           insertLocData();

          

          }

   return true;

   case 5:

    GeoPoint centerPoint2 = mapView.getProjection().fromPixels(mapView.getWidth()/2, mapView.getBottom()/2);

           int lat2=(int)centerPoint2.getLatitudeE6(); //즐겨찾기(2)에 넣을 위도값 = lat2

           int lng2=(int)centerPoint2.getLongitudeE6();//즐겨찾기(2)에 넣을 경도값 = lat2

           favor="favo2";

           if(location != null){

            dbin_lat = (double)lat2; 

            dbin_lng = (double)lng2;

            insertLocData();

           }

   return true

   case 6:

    

    GeoPoint centerPoint3 = mapView.getProjection().fromPixels(mapView.getWidth()/2, mapView.getBottom()/2);

      int lat3=(int)centerPoint3.getLatitudeE6(); //즐겨찾기(3)에 넣을 위도값 = lat3

           int lng3=(int)centerPoint3.getLongitudeE6();//즐겨찾기(3)에 넣을 경도값 = lat3

           favor="favo3";

           if(location != null){

            dbin_lat = (double)lat3;

            dbin_lng = (double)lng3;

            insertLocData();

           }

   return true;

   }

  return false;

}

  

  

  

  

  

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.map);

        


         


        

      

        mapView = (MapView) findViewById(R.id.mapview1);

        mapView.setBuiltInZoomControls(true);

        

        loadGps();

        

        

        List<Overlay> mapOverlays = mapView.getOverlays();

        Drawable drawable_me = this.getResources().getDrawable(R.drawable.me);

        MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable_me,this);

        

        parsingMark();

        

        double lat=0, lng=0;

        for(int i=0;i<stName.size();i++){

        int ct=0;

        

        if(stCt.get(i).equals("cafe")) ct=1;

        if(stCt.get(i).equals("food")) ct=2;

        if(stCt.get(i).equals("movie")) ct=3;

        if(stCt.get(i).equals("musical")) ct=3;

        if(stCt.get(i).equals("etc")) ct=4;

        

        switch(ct){

        case 1:

        Drawable drawable_cafe;  //////////////////////////cafe marker

        drawable_cafe = getResources().getDrawable(R.drawable.cafe_marker);

        MyItemizedOverlay2 itemizedOverlay;

        itemizedOverlay = new MyItemizedOverlay2(drawable_cafe, mapView);

        itemizedOverlay.setStat(stName.get(i), stCity.get(i), stGu.get(i),proDc.get(i),proExplain.get(i), stImg.get(i), 

        stComp.get(i), stUrl.get(i), stLat.get(i), stLng.get(i), stPhone.get(i));

        lat= stLat.get(i);

        lng = stLng.get(i);

        GeoPoint point1 = new GeoPoint((int)(lat*1E6),(int)(lng*1E6));

        OverlayItem overlayItem = new OverlayItem(point1,stName.get(i), proExplain.get(i));

        itemizedOverlay.addOverlay(overlayItem);

       

        mapOverlays.add(itemizedOverlay);

        break;

        case 2:

       

        Drawable drawable_food;  //////////////////////////food marker

        drawable_food = getResources().getDrawable(R.drawable.food_marker);

        MyItemizedOverlay2 itemizedOverlay2;

        itemizedOverlay2 = new MyItemizedOverlay2(drawable_food, mapView);

        itemizedOverlay2.setStat(stName.get(i), stCity.get(i), stGu.get(i),proDc.get(i),proExplain.get(i), stImg.get(i), 

        stComp.get(i), stUrl.get(i), stLat.get(i), stLng.get(i), stPhone.get(i));

        lat= stLat.get(i);

        lng = stLng.get(i);

        GeoPoint point2 = new GeoPoint((int)(lat*1E6),(int)(lng*1E6));

        OverlayItem overlayItem2 = new OverlayItem(point2,stName.get(i), proExplain.get(i));

        itemizedOverlay2.addOverlay(overlayItem2);

       

        mapOverlays.add(itemizedOverlay2);

        break;

        case 3:

       

        Drawable drawable_seeing; //////////////////////////seeing marker

        drawable_seeing = getResources().getDrawable(R.drawable.seeing_marker);

        MyItemizedOverlay2 itemizedOverlay3;

        itemizedOverlay3 = new MyItemizedOverlay2(drawable_seeing, mapView);

        itemizedOverlay3.setStat(stName.get(i), stCity.get(i), stGu.get(i),proDc.get(i),proExplain.get(i), stImg.get(i), 

        stComp.get(i), stUrl.get(i), stLat.get(i), stLng.get(i), stPhone.get(i));

        lat= stLat.get(i);

        lng = stLng.get(i);

        GeoPoint point3 = new GeoPoint((int)(lat*1E6),(int)(lng*1E6));

        OverlayItem overlayItem3 = new OverlayItem(point3,stName.get(i), proExplain.get(i));

        itemizedOverlay3.addOverlay(overlayItem3);

       

        mapOverlays.add(itemizedOverlay3);

        break;

        case 4:

        Drawable drawable_etc;   //////////////////////////etc marker

        drawable_etc = getResources().getDrawable(R.drawable.etc_marker);

        MyItemizedOverlay2 itemizedOverlay4;

        itemizedOverlay4 = new MyItemizedOverlay2(drawable_etc, mapView);

        itemizedOverlay4.setStat(stName.get(i), stCity.get(i), stGu.get(i),proDc.get(i),proExplain.get(i), stImg.get(i), 

        stComp.get(i), stUrl.get(i), stLat.get(i), stLng.get(i), stPhone.get(i));

        lat= stLat.get(i);

        lng = stLng.get(i);

        GeoPoint point4 = new GeoPoint((int)(lat*1E6),(int)(lng*1E6));

        OverlayItem overlayItem4 = new OverlayItem(point4,stName.get(i), proExplain.get(i));

        itemizedOverlay4.addOverlay(overlayItem4);

       

        mapOverlays.add(itemizedOverlay4);

        break;

        }

    }

        

        //GeoPoint point = new GeoPoint((int)(37.504738*1E6),(int)(127.025385*1E6));

        GeoPoint  point = new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6));


        OverlayItem overlayitem = new OverlayItem(point, "현재 위치입니다. ""-주변환경에따라 약간에 오차가있을수 있습니다.");

        itemizedoverlay.addOverlay(overlayitem);

        favPoint = point;

        mapController = mapView.getController();

        mapController.setCenter(point);

        Log.d("mapco""map "+ point);

        mapController.setZoom(17);

        mapOverlays.add(itemizedoverlay);

 

        

 


        

               

        ImageButton button1 = (ImageButton)findViewById(R.id.topButton1);

        button1.setOnClickListener(new ImageButton.OnClickListener(){

         public void onClick(View v){

          onBackPressed();

         }

        }); 

        

        

        ImageButton button2 = (ImageButton)findViewById(R.id.topButton2);

        button2.setOnClickListener(new ImageButton.OnClickListener(){

         public void onClick(View v){

          Intent intent = new Intent(EventMap.this, category.class);

          startActivity(intent);

         }

        }); 

        

        

        ImageButton button3 = (ImageButton)findViewById(R.id.topButton3);

        button3.setOnClickListener(this);

        


        

    }

    

    

    

    public void parsingMark(){

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost("http://211.109.180.26:9080/couponWeb/xmlAll.jsp");

httppost.setHeader("Content-Type""application/x-www-form-urlencoded");

 

try{  

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

//Log.d("address" , "Is = "+searchText.getText().toString());

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));

//Execute Http post request 

HttpResponse response = null;

InputStream is = null;

response = httpclient.execute(httppost);

HttpEntity entityResponse = response.getEntity();

is = entityResponse.getContent();

XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();

    parserCreator.setNamespaceAware(true);

    XmlPullParser parser = parserCreator.newPullParser();

     

 

  parser.setInput(is, "utf-8");

 

// parser.setInput(new InputStreamReader(response.getEntity().getContent()));

//  parser.setInput(text.openStream(), null);

 

  int parserEvent = parser.getEventType();

  String tag, chTag;

  chTag="";

  boolean inTitle=false;

 

 

  while(parserEvent != XmlPullParser.END_DOCUMENT) {

    switch(parserEvent) {

   

    case XmlPullParser.TEXT:

    tag = parser.getName();

    if(inTitle) {

    //Log.i("tag", "Title = " +chTag);

   

    if(chTag.compareTo("st_name") == 0) stName.add(parser.getText());

    if(chTag.compareTo("st_city") == 0) stCity.add(parser.getText());

    if(chTag.compareTo("st_gu") == 0) stGu.add(parser.getText());

    if(chTag.compareTo("pro_dc") == 0) proDc.add(parser.getText());

    if(chTag.compareTo("pro_explain") == 0) proExplain.add(parser.getText());

    if(chTag.compareTo("st_phone")== 0 ) stPhone.add(parser.getText());

    if(chTag.compareTo("st_lat") == 0 ) stLat.add(Double.parseDouble(parser.getText()));

    if(chTag.compareTo("st_lng") == 0 ) stLng.add(Double.parseDouble(parser.getText()));

    if(chTag.compareTo("st_img") == 0) stImg.add(parser.getText());

    if(chTag.compareTo("st_cate") == 0) stCt.add(parser.getText());

    if(chTag.compareTo("st_comp") == 0) stComp.add(parser.getText());

    if(chTag.compareTo("st_url") == 0) stUrl.add(parser.getText());

    }

   

    break;

   

    case XmlPullParser.END_TAG:

    tag = parser.getName();

    if(tag.compareTo("st_name") == 0) {

    inTitle = false;

    }

    //Log.d("END_TAG", tag);

    break;

   

    case XmlPullParser.START_TAG:

    if(parser.getName() == null){

    continue;

    }

    inTitle = true;

    tag = parser.getName();

    //Log.d("START_TAG", tag);

   

    if(tag.compareTo("st_name") == 0) inTitle = true;

    if(tag.compareTo("pro_dc") == 0) inTitle = true;

    if(tag.compareTo("pro_explain") == 0) inTitle = true;

    if(tag.compareTo("coupon_start") == 0) inTitle = true;

    if(tag.compareTo("coupon_end") == 0) inTitle = true;

    if(tag.compareTo("st_start_time") == 0) inTitle = true;

    if(tag.compareTo("st_end_time") == 0) inTitle = true;

    if(tag.compareTo("st_lat") == 0) inTitle = true;

    if(tag.compareTo("st_lng") == 0) inTitle = true;

    if(tag.compareTo("st_city") == 0) inTitle = true;

    if(tag.compareTo("st_gu") == 0) inTitle = true;

    if(tag.compareTo("st_addr") == 0) inTitle = true;

    if(tag.compareTo("st_phone") == 0) inTitle = true;

    if(tag.compareTo("st_cate") == 0) inTitle = true;

    if(tag.compareTo("st_img") == 0) inTitle = true;

    if(tag.compareTo("st_comp") == 0) inTitle = true;

    if(tag.compareTo("st_url") == 0) inTitle = true;

   

    chTag = parser.getName();

    //Log.d("tagName", "tag = " + chTag);

    break;

   

    }

    parserEvent = parser.next();

   

    }

  }catch(Exception e) {

  e.printStackTrace();

  }

 

  }


 private void loadGps() {

        Log.w(TAG , "loadGps Start" );

        

        String context = Context.LOCATION_SERVICE;

        locationManager = (LocationManager)getSystemService(context);

        

        //GPS 환경설정

        Criteria criteria = new Criteria();

        criteria.setAccuracy(Criteria.ACCURACY_FINE);       // 정확도

        criteria.setPowerRequirement(Criteria.POWER_HIGH);   // 전원 소비량

        criteria.setAltitudeRequired(true);                // 고도, 높이 값을 얻어 올지를 결정

        criteria.setBearingRequired(true);                 // provider 기본 정보

        criteria.setSpeedRequired(true);                   //속도

        criteria.setCostAllowed(true);                      //위치 정보를 얻어 오는데 들어가는  비용

         

        provider = locationManager.getBestProvider(criteria, true);

        Log.i(TAG"provider:"+provider);

        if(provider == null){

            result = chkGpsService();

            if(result){

                loadGps();

            }

             

        }else{

            location = locationManager.getLastKnownLocation(provider);

            locationManager.requestLocationUpdates(provider, 2000, 10, loclistener);

             

            if(location == null){

                location = locationManager.getLastKnownLocation(provider);

                if(location == null){

                    Log.w(TAG"get Location From GPS Fail !!!!!");

                    AlertDialog.Builder adb = new AlertDialog.Builder(EventMap.this);

                    adb.setPositiveButton("OK"new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {

                        }

                    });

                    adb.setTitle( R.string.Location_fail_title );

                    adb.setMessage(R.string.Location_fail_message);

                    adb.show();

                }


            }

        }

    }   

     

    private final LocationListener loclistener = new LocationListener(){

        public void onLocationChanged(Location location) {

            Log.w(TAG , "onLocationChanged" );

        }


        public void onProviderDisabled(String provider) {

            Log.w(TAG , "onProviderDisabled" );

        }


        public void onProviderEnabled(String provider) {

            Log.w(TAG , "onProviderEnabled" );

        }


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

            Log.w(TAG , "onStatusChanged" );

        } 

    };

     

    private boolean chkGpsService() {

        String gs = android.provider.Settings.Secure.getString(getContentResolver(),

        android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

        Log.w("chkGpsService" , "get GPs Service" );

         

        if (gs.indexOf("gps", 0) < 0) {

            Log.w("chkGpsService" , "status: off" );

            

            AlertDialog.Builder gsDialog = new AlertDialog.Builder(this);

            gsDialog.setTitle("GPS Status OFF !!!");

            gsDialog.setMessage("Change Setting !!");

            gsDialog.setPositiveButton("OK"new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {

                 

                    Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);

                    intent.addCategory(Intent.CATEGORY_DEFAULT);

                    startActivity(intent);

                }

            }).create().show();

            return false;

        } else {

            Log.w("chkGpsService" , "status: on" );                 

            return true;

        }

    }  



 @Override

 protected boolean isRouteDisplayed() {

  return false;

 }

 

  private void openDatabase() {

  try {

   db = SQLiteDatabase.openDatabase("data/data/sol.samtle/location.db"null, SQLiteDatabase.CREATE_IF_NECESSARY);

  }catch(Exception e){

   e.printStackTrace();

  }

 }

  

  private void insertLocData() {

   db.beginTransaction();

   try{

    db.execSQL("create table if not exists LocTable("

      +"lat double, "

      +"lng double, " +"favo text);");

   

    String[] columns = {"lat","lng","favo"};

    Cursor c = db.query("LocTable", columns, "favo='"+favor+"'",null , nullnull"");

    c.moveToFirst();

    if(c.getCount()==0){

    Log.d("favorite""d2d "+favor);

      Log.d("favorite""dd "+favor);

      db.execSQL("insert into LocTable(lat, lng, favo)"+" values("+dbin_lat+","+dbin_lng+",'"+favor+"');");

      if(favor.equals("favo1")) Toast.makeText(this"즐겨찾기1에 등록되었습니다.",3000).show();

      if(favor.equals("favo2")) Toast.makeText(this"즐겨찾기2에 등록되었습니다.",3000).show();

      if(favor.equals("favo3")) Toast.makeText(this"즐겨찾기3에 등록되었습니다.",3000).show();

     

     }else{

       AlertDialog.Builder alt_bld = new AlertDialog.Builder(this); 

        alt_bld.setMessage("등록된 즐겨찾기입니다. 덮어 씌우시겠습니까?").setCancelable(false).setPositiveButton("예"

          new DialogInterface.OnClickListener() { 

           public void onClick(DialogInterface dialog, int id) {

            Log.d("click dbin" ," is = " +dbin_lng);

            //db.execSQL("update LocTable set lat="+dbin_lat+" and lng="+dbin_lng+" where favo='"+favor+"';");

            ContentValues updateValue = new ContentValues();

            updateValue.put("lat"dbin_lat);

            updateValue.put("lng"dbin_lng);

            db.update("LocTable", updateValue, "favo='"+favor+"'",null);

          }}).setNegativeButton("아니오"

            new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int id) {

             dialog.cancel();

          }}); 

  

          AlertDialog alert = alt_bld.create();  

          alert.setTitle("즐겨찾기 덮어쓰기 확인 ");

          alert.show(); 

     }

    

    c.close(); 

    db.setTransactionSuccessful();

   }catch(Exception e) {

    e.printStackTrace();

   }

   finally{

    db.endTransaction();

   }

   

  }

  

  private void useCursor1(){

   try{

    String[] columns = {"lat","lng","favo"};

    Cursor c = db.query("LocTable", columns, "favo='"+favor+"'"nullnullnull"");

    c.moveToFirst();

    if(c.getCount()>=1){

     int int_favo=c.getColumnIndex("favo");

     String is_favo = c.getString(int_favo);

     Log.d("favor" ,"is = "+favor);

     Log.d("favor is ","is = "+is_favo);

     if(is_favo.equals(favor)){

      int int_lat = c.getColumnIndex("lat");

      dbout_lat = c.getDouble(int_lat);

      int int_lng = c.getColumnIndex("lng");

      dbout_lng = c.getDouble(int_lng);

      favPoint = new GeoPoint((int)(((dbout_lat*0.00000001)*100)*1E6), (int)(((dbout_lng*0.00000001)*100)*1E6));

      isExist=true;

     }else{

      isExist=false;

      Toast.makeText(this,"즐겨찾기가 존재 하지 않습니다. 먼저 등록해주세요. ",5000).show();

     }

     c.close();

    }else{

     Toast.makeText(this"등록된 즐겨찾기가 없습니다. ",3000).show();

     c.close();

    }

    

   }catch (Exception e) {

    e.printStackTrace();

   }

   

  }

  public static void showTextDialog(final Activity activity, String title, String text, 

  String hint, DialogInterface.OnClickListener listener){

  searchText = new EditText(activity);

  searchText.setText(text);

  searchText.setHint(hint);

  AlertDialog.Builder ad = new AlertDialog.Builder(activity);

  ad.setTitle(title);

  ad.setView(searchText);

  ad.setPositiveButton("검색", listener);

  ad.setNegativeButton("취소", listener);

  ad.show();

 

  }

  public void onClick(DialogInterface dialog, int which) {

 

  String txt = searchText.getText().toString();

parsingLoc();

 

if(searchLat!=null){

searchPoint = new GeoPoint((int)(searchLat*1E6), (int)(searchLng*1E6));

mapController.animateTo(searchPoint);

    mapController.setZoom(17);

    Toast.makeText(this,searchText.getText().toString()+" 이동합니다. ",4000).show(); 

    searchLat=null;

    searchLng=null;

}else{

Toast.makeText(this"검색어를 다시 한번 확인해주세요.", 4000).show();

}

  }


  public void parsingLoc(){

HttpClient httpclient = new DefaultHttpClient();

String url = searchText.getText().toString();

String url2;

url2 = url.replaceAll("\\p{Space}""%20");

HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/xml?address="+url2+"&sensor=true");

httppost.setHeader("Content-Type""application/x-www-form-urlencoded");

 

try{  

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));

//Execute Http post request 

HttpResponse response = null;

InputStream is = null;

response = httpclient.execute(httppost);

HttpEntity entityResponse = response.getEntity();

is = entityResponse.getContent();

XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();

    parserCreator.setNamespaceAware(true);

    XmlPullParser parser = parserCreator.newPullParser();

     

 

  parser.setInput(is, "utf-8");

 

// parser.setInput(new InputStreamReader(response.getEntity().getContent()));

//  parser.setInput(text.openStream(), null);

 

  int parserEvent = parser.getEventType();

  String tag;

  boolean check_geocode=false;

  boolean check_result=false;

  boolean check_geometry=false;

  boolean check_location=false;

  boolean check_lat=false;

  boolean check_lng=false;

 

 

  while(parserEvent != XmlPullParser.END_DOCUMENT) {

  switch(parserEvent) {

 

  case XmlPullParser.TEXT:

  if(check_geocode && check_result && check_geometry && check_location && check_lat){

  searchLat = (Double.parseDouble(parser.getText()));

  }

  if(check_geocode && check_result && check_geometry && check_location && check_lng) {

  searchLng = (Double.parseDouble(parser.getText()));

  }

 

  break;

 

  case XmlPullParser.END_TAG:

  tag = parser.getName();

  if(tag.compareTo("GeocodeResponse")==0) check_geocode=false;

  if(tag.compareTo("result")==0) check_result=false;

  if(tag.compareTo("geometry")==0) check_geometry=false;

  if(tag.compareTo("location") == 0) check_location=false;

  if(tag.compareTo("lat") ==0) check_lat=false;

  if(tag.compareTo("lng")==0) check_lng=false;

 

  break;

 

  case XmlPullParser.START_TAG:

  tag=parser.getName();

  if(tag.compareTo("GeocodeResponse")==0) check_geocode=true;

  if(tag.compareTo("result")==0) check_result=true;

  if(tag.compareTo("geometry")==0) check_geometry=true;

  if(tag.compareTo("location") == 0) check_location=true;

  if(tag.compareTo("lat") ==0) check_lat=true;

  if(tag.compareTo("lng")==0) check_lng=true;

  break;

 

  }

  //Log.d("iterator", "i = " + i);

  //i++;

  parserEvent = parser.next();

  }

  }catch(Exception e) {

  e.printStackTrace();

  }

 

  }

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

showTextDialog(this"지역 검색""""검색어를 입력하세요"this);

}

 

}