마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

구글맵 마커 이벤트 질문!!

0 추천
package com.example.googlemaptest;

 

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.support.v4.app.FragmentActivity;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

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

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

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.MarkerOptions;

 

public class MainActivity extends FragmentActivity implements LocationListener{

 

private GoogleMap mmap;

private LocationManager locationManager;

private String provider;

LatLng loc = new LatLng(35.179434, 128.555509);

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

GooglePlayServicesUtil.isGooglePlayServicesAvailable(MainActivity.this);

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

        Criteria criteria = new Criteria();

        provider = locationManager.getBestProvider(criteria, true);

     

      if(provider==null){

      new AlertDialog.Builder(MainActivity.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, MainActivity.this);

     setUpMapIfNeeded();

    }

Button b = (Button)findViewById(R.id.button1);

b.setOnClickListener(new OnClickListener(){

public void onClick(View v){

Intent intent = new Intent(MainActivity.this, WIFIScanner.class);

startActivity(intent);

}

});

}

 

private void setUpMapIfNeeded() {

  if (mmap == null) {

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

  mmap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.duck)).position(loc));

  if (mmap != null) {

  setUpMap();

  }

  }

  }

 

@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, MainActivity.this);

        setUpMapIfNeeded();

}

break;

}

}

   private void setUpMap() {

       mmap.setMyLocationEnabled(true);

       mmap.getMyLocation();

   }

      boolean locationTag=true;

      @Override

      public void onLocationChanged(Location location) {

       if(locationTag){

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

           double lat =  location.getLatitude();

           double lng = location.getLongitude();

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

           locationTag=false;

       }

 }

}

글자수 제한떄문에 코드 일부분을 빼고 적었습니다

위코드에서 마크이벤트를 넣을려구하는데 밑에 코드를 어느 부분에 넣어야하나요?

onCreate나 다른곳에 넣고 돌려봐도 구동되지 않았습니다

아니면 코드가 잘 못된건가요?

mmap.setOnMarkerClickListener(new OnMarkerClickListener(){

@override

public boolean onMarkerClick(Marker arg0){

   Button b = (Button)findViewById(R.id.button1);

         b.setOnClickListener(new OnClickListener(){

             publick void onClick(View v){

                     Intent intent = new Intent(MainActivity.this, WIFIScanner.class);

                     startActivity(intent);

                     }

             });

                     ruturn false;

        }

    });

 

 

카릴리 (470 포인트) 님이 2015년 5월 18일 질문

1개의 답변

+1 추천
 
채택된 답변

코드가 잘못된 것 같습니다.

마커 클릭 이벤트 안에 버튼을 선언하고 그 버튼의 클릭리스너를 선언하면,

마커 클릭했을 때, 결국 버튼 선언 및 버튼 클릭리스너 선언만 되는거죠

아래처럼 하면 되지 않을까 싶습니다.

 

mmap.setOnMarkerClickListener(new OnMarkerClickListener(){

@override

public boolean onMarkerClick(Marker arg0){

                     Intent intent = new Intent(MainActivity.this, WIFIScanner.class);

                     startActivity(intent);

                     ruturn false;

        }

    });

cc1232 (35,280 포인트) 님이 2015년 5월 18일 답변
카릴리님이 2015년 5월 19일 채택됨
...