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..
スポーツ
スポーツ
サンダル
サンダル
284,287 Visitors up to today!
Today 4 hit, Yesterday 13 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