우선 제가 하고자 하는 목표를 알려드리겠습니다
일단 먼저 내가 고른 버스정류장의 위도와 경로, 정류소명을 받아오고 이것의 좌표를 구글맵으로 연동하여 좌표를 찍는일까지 하고자 합니다. 정말 별거아니고 쉬운거같은데 왜 자꾸 안되는걸까요?
정말 별의 별 수를 다 짜보았습니다. 생성자로 만들어서 객체로 넘겨보기도 하고 인텐트 바뀔때 데이터로 넘겨주기도 하고 정말 수없이 시도해보았는데 결국 되지가 않네요. 진짜 부탁드립니다. 무엇이 문제인지를 제발 알려주시면 감사드리겠습니다ㅜㅜ 인생의 은인이 될거같아요....고구마 먹은듯이 답답해요.
정류소명과 좌표받아오는건 문제가 전혀 없습니다! 오직 연동하는 부분에서 앱이 꺼지는 오류가 발생하는 것입니다 ㅜㅜㅜ
저희 코드를 보여드릴게요.
------------------구글맵과 연동시킬 클래스----------------------
public class MapLocation extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap gMap;
Intent intent = this.getIntent();
double currLatitude=intent.getDoubleExtra("lat",-1);
double currLongitude=intent.getDoubleExtra("lon",-1);
String string="";
LatLng place;
public MapLocation(){
}
@Override
protected void onCreate(Bundle savedInstanceState) {
place = new LatLng(currLatitude, currLongitude);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
gMap = googleMap;
gMap.getUiSettings().setZoomControlsEnabled(true);
gMap.getUiSettings().setCompassEnabled(true);
gMap.getUiSettings().setMapToolbarEnabled(true);
// LatLng : 위도 경도 잡아주는 객체
// LatLng place = new LatLng(currLatitude, currLongitude);
// 쥐잉~ 하면서 카메라 줌
// 20 : 확대하는 정도
CameraPosition cameraPosition = new CameraPosition.Builder().target(place).zoom(15).build();
gMap.animateCamera(CameraUpdateFactory.newCameraPosition((cameraPosition)));
// 좌표에 Marker가 꽂히게
gMap.addMarker(new MarkerOptions().position(place).title("검색한 정류소"));
gMap.addMarker(new MarkerOptions().position(place).snippet(string));
// 마커 클릭시 행동
gMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(MapLocation.this, marker.getSnippet(), Toast.LENGTH_SHORT).show();
return false;
}
});
Toast.makeText(this, "lat: " + currLatitude + ", lon: " + currLongitude, Toast.LENGTH_SHORT).show();
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
gMap.setMyLocationEnabled(true);
}
}
-----------------버튼과 이벤트 처리할 코드 --------------
//버스 위치 지도 확인
busBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do something when the button is clicked
double d1=Double.valueOf(currentStation.getGpsX()).doubleValue();
double d2=Double.valueOf(currentStation.getGpsY()).doubleValue();
Toast.makeText(getApplicationContext(), "d1="+ map.currLatitude, Toast.LENGTH_SHORT).show();
//map=new MapLocation(d1,d2,currentStation.getStNm());
Intent intent1 = new Intent(getApplicationContext(), MapLocation.class);
intent1.putExtra("lat", d1);
intent1.putExtra("lon", d2); // intent1.putExtra("stnName", currentStation.getStNm());
startActivity(intent1);
// Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:"+d1+","+d2));
// intent1.setPackage("com.google.android.apps.maps");
// startActivity(intent1);
}
});
처음엔 MapLocation의 생성자로 인자를 받아서 집어넣는걸로 했엇는데
그때는 지도가 켜지긴했었지만 초기값이 전혀 바뀌지 않아서 애먹었는데
이렇게 인텐트 값으로 넘겨주려는 코드로 바꾸니까 이젠 아예 지도가 켜지지도 않고 앱이 꺼지고 마네요 ㅜㅜ
진짜 너무 힘이듭니다. 제가 초짜라서 헤매는건당연한데 답을 구할 길이 없어서 답답합니다ㅜㅜ