BLOG main image
분류 전체보기 (74)
Cocos2d (9)
낙서장 (4)
스토리지 (1)
안드로이드 (54)
유용한링크 (1)
모바일게임 (2)
추천앱 (1)
아이폰 (0)
맛집/여행 (1)
ナイトウェアメンズ
ナイトウェアメンズ
割烹着 オシャレ
割烹着 オシャレ
klicken Sie einfach auf die bi..
klicken Sie einfach auf die bi..
スポーツ
スポーツ
サンダル
サンダル
282,399 Visitors up to today!
Today 42 hit, Yesterday 39 hit
daisy rss
tistory 티스토리 가입하기!
2012.12.31 11:55
  

12월 부터 새로운 구글맵 프로젝트를 생성하려면 google map v2를 사용해야 된다고 합니다.

이전 프로젝트는  google map v1을 그대로 사용하실수 있습니다

google map v2에서 현재위치 받아오는 법을 포스팅 해보겠습니다.


1.인증 및 초기설정 지도띄우기는 http://androidhuman.tistory.com/518 에 정리가 잘되어 있습니다

  - 주의 할점이 프로젝트가 에러나는 경우가 발생하면  google-play-services_lib 를 빌드한후에   google-play-services_lib를 생성하고자 하는 프로젝트로 가져오면 에러 없이 잘 동작됩니다


2. http://patesush.blogspot.kr/2012/12/how-to-create-app-for-google-map-v2-in.html 참고 했습니다


=========================================================================================================


//****************** 현재위치 받기 Activity ********************************//

import com.google.android.gms.common.GooglePlayServicesUtil;

import com.google.android.gms.maps.GoogleMap;

import com.google.android.gms.maps.LocationSource;

import com.google.android.gms.maps.LocationSource.OnLocationChangedListener;

import com.google.android.gms.maps.SupportMapFragment;


import com.google.android.gms.maps.model.BitmapDescriptorFactory;

import com.google.android.gms.maps.model.LatLng;

import com.google.android.gms.maps.model.Marker;

import com.google.android.gms.maps.model.MarkerOptions;


import android.R.layout;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.location.Criteria;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.provider.Settings;

import android.support.v4.app.FragmentActivity;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Toast;


public class LocationActivity extends FragmentActivity implements LocationListener {

    private GoogleMap mmap;

    private LocationManager locationManager;

    private String provider;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_loaction);

        

      GooglePlayServicesUtil.isGooglePlayServicesAvailable(LocationActivity.this);

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

        Criteria criteria = new Criteria();

        provider = locationManager.getBestProvider(criteria, true);

        

        if(provider==null){  //위치정보 설정이 안되어 있으면 설정하는 엑티비티로 이동합니다

          new AlertDialog.Builder(LocationActivity.this)

       .setTitle("위치서비스 동의")

       .setNeutralButton("이동" ,new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);

}

}).setOnCancelListener(new DialogInterface.OnCancelListener() {

@Override

public void onCancel(DialogInterface dialog) {

finish();

}

})

       .show();

        }else{   //위치 정보 설정이 되어 있으면 현재위치를 받아옵니다

    locationManager.requestLocationUpdates(provider, 1, 1, LocationActivity.this);

        setUpMapIfNeeded();

        }

        

    }

    

    @Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {//위치설정 엑티비티 종료 후 

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case 0:

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

       Criteria criteria = new Criteria();

       provider = locationManager.getBestProvider(criteria, true);

       if(provider==null){//사용자가 위치설정동의 안했을때 종료 

finish();

}else{//사용자가 위치설정 동의 했을때 

locationManager.requestLocationUpdates(provider, 1L, 2F, LocationActivity.this);

        setUpMapIfNeeded();

}

break;

}

}

    

    @Override

public void onBackPressed() {

this.finish();

}


    @Override

    protected void onResume() {

        super.onResume();

        setUpMapIfNeeded();

        

    }


    @Override

    protected void onPause() {

        super.onPause();

        locationManager.removeUpdates(this);

    }

    

    private void setUpMapIfNeeded() {

if (mmap == null) {

mmap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview)).getMap();

if (mmap != null) {

setUpMap();

}

}

}

    

    private void setUpMap() {

    mmap.setMyLocationEnabled(true);

mmap.getMyLocation();

}




    boolean locationTag=true;

    

    @Override

    public void onLocationChanged(Location location) {

    if(locationTag){//한번만 위치를 가져오기 위해서 tag를 주었습니다

    Log.d("myLog"  , "onLocationChanged: !!"  + "onLocationChanged!!");

       double lat =  location.getLatitude();

       double lng = location.getLongitude();

    

Toast.makeText(LocationActivity.this, "위도  : " + lat +  " 경도: "  + lng ,  Toast.LENGTH_SHORT).show();

      locationTag=false;

    }


    }


@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

}


========================================================================================================

초특급유망주 | 2013.04.18 22:46 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하세요 ! 요즘 위치기반 축구장을 찾아주는 프로그램 하나 짜볼려고 하는 학생입니다!

이번 소스를 똑같이 썼는데 위치서비스 동의 후 이동버튼을 누르면 설정화면만 나오고 맵으로 다시 돌아가지는 않네요 혹시 해결방법을 아시나요 갤3로 디버깅 하고있구요 설정화면에 확인버튼 같은게 없네요
덩치 | 2013.08.20 16:35 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하세요. 위치받는것을 onLocationListener(Location location)이 아니라

버튼을 하나 만들고 거기에 클릭리스너를 줘서 받고싶은데요

여기서 좌표를 location.getLatitude(); 이렇게 받는데

버튼클릭리스너로 옮긴다면 location을 어떻게 처리해줘야하나요 ??

쉽게말해 클릭했을때 위치를 받아오려면 어떻게 바꿔줘야하는지

도움좀주실수있겠습니까 ?
루틴 | 2013.08.22 17:52 신고 | PERMALINK | EDIT/DEL | REPLY
버튼을 클릭했을때

locationManager.requestLocationUpdates(provider, 1, 1, LocationActivity.this);
setUpMapIfNeeded();

를 써주면 될듯합니다~
Name
Password
Homepage
Secret