package
com.example.tabago;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.annotation.NonNull;
import
androidx.core.app.ActivityCompat;
import
androidx.fragment.app.FragmentManager;
import
android.Manifest;
import
android.content.Intent;
import
android.content.pm.PackageManager;
import
android.graphics.PointF;
import
android.location.Location;
import
android.net.Uri;
import
android.os.Bundle;
import
android.widget.Toast;
import
com.naver.maps.geometry.LatLng;
import
com.naver.maps.map.CameraPosition;
import
com.naver.maps.map.LocationTrackingMode;
import
com.naver.maps.map.MapFragment;
import
com.naver.maps.map.NaverMap;
import
com.naver.maps.map.OnMapReadyCallback;
import
com.naver.maps.map.overlay.Marker;
import
com.naver.maps.map.overlay.Overlay;
import
com.naver.maps.map.util.FusedLocationSource;
import
java.util.ArrayList;
import
java.util.List;
import
android.os.Bundle;
public
class
SubActivity3
extends
AppCompatActivity
implements
OnMapReadyCallback, NaverMap.OnMapClickListener {
private
double
lat, lon;
private
NaverMap naverMap;
private
FusedLocationSource locationSource;
private
static
final
int
LOCATION_PERMISSION_REQUEST_CODE =
1000
;
private
static
final
String[] PERMISSIONS = {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
};
List<Marker> lstMarkers =
new
ArrayList<>();
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub3);
FragmentManager fm = getSupportFragmentManager();
MapFragment mapFragment = (MapFragment) fm.findFragmentById(R.id.map_sub3);
if
(mapFragment ==
null
) {
mapFragment = MapFragment.newInstance();
fm.beginTransaction().add(R.id.map_sub3, mapFragment).commit();
}
mapFragment.getMapAsync(
this
);
locationSource =
new
FusedLocationSource(
this
, LOCATION_PERMISSION_REQUEST_CODE);
}
@Override
public
void
onMapReady(
@NonNull
NaverMap naverMap) {
this
.naverMap = naverMap;
naverMap.setOnMapClickListener(
this
);
naverMap.setLocationSource(locationSource);
ActivityCompat.requestPermissions(
this
, PERMISSIONS, LOCATION_PERMISSION_REQUEST_CODE);
naverMap.addOnLocationChangeListener(
new
NaverMap.OnLocationChangeListener() {
@Override
public
void
onLocationChange(
@NonNull
Location location) {
lat = location.getLatitude();
lon = location.getLongitude();
}
});
addMarkers();
for
(Marker marker : lstMarkers) {
marker.setOnClickListener(
new
Overlay.OnClickListener() {
@Override
public
boolean
onClick(
@NonNull
Overlay overlay) {
launchNaverMapsApp(marker.getPosition());
return
true
;
}
});
}
}
@Override
public
void
onRequestPermissionsResult(
int
requestCode,
@NonNull
String[] permissions,
@NonNull
int
[] grantResults) {
if
(locationSource.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
if
(!locationSource.isActivated()) {
naverMap.setLocationTrackingMode(LocationTrackingMode.None);
}
else
{
naverMap.setLocationTrackingMode(LocationTrackingMode.Follow);
}
}
super
.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
public
void
onMapClick(
@NonNull
PointF pointF,
@NonNull
LatLng latLng) {
Toast.makeText(
this
,
"맵 클릭 위치: "
+ latLng.toString(), Toast.LENGTH_SHORT).show();
}
private
void
addMarkers() {
Marker marker1 =
new
Marker();
marker1.setPosition(
new
LatLng(
37.210279
,
126.975302
));
marker1.setMap(naverMap);
lstMarkers.add(marker1);
Marker marker2 =
new
Marker();
marker2.setPosition(
new
LatLng(
37.211645
,
127.980015
));
marker2.setMap(naverMap);
lstMarkers.add(marker2);
Marker marker3 =
new
Marker();
marker3.setPosition(
new
LatLng(
37.212269
,
127.970126
));
marker3.setMap(naverMap);
lstMarkers.add(marker3);
Marker marker4 =
new
Marker();
marker4.setPosition(
new
LatLng(
37.390935
,
126.956417
));
marker4.setMap(naverMap);
lstMarkers.add(marker4);
Marker marker5 =
new
Marker();
marker5.setPosition(
new
LatLng(
37.391317
,
126.957767
));
marker5.setMap(naverMap);
lstMarkers.add(marker5);
Marker marker6 =
new
Marker();
marker6.setPosition(
new
LatLng(
37.390935
,
126.956417
));
marker6.setMap(naverMap);
lstMarkers.add(marker6);
Marker marker8 =
new
Marker();
marker8.setPosition(
new
LatLng(
37.398283
,
126.952497
));
marker8.setMap(naverMap);
lstMarkers.add(marker8);
Marker marker9 =
new
Marker();
marker9.setPosition(
new
LatLng(
37.397808
,
126.953833
));
marker9.setMap(naverMap);
lstMarkers.add(marker9);
Marker marker10 =
new
Marker();
marker10.setPosition(
new
LatLng(
37.411986
,
126.951515
));
marker10.setMap(naverMap);
lstMarkers.add(marker10);
}
private
void
launchNaverMapsApp(LatLng markerPosition) {
if
(lat !=
0
&& lon !=
0
) {
String markerLocation = markerPosition.latitude +
","
+ markerPosition.longitude;
String currentLocation = lat +
","
+ lon;
"&dest="
+ markerLocation +
"&appname=com.example.tabago"
;
Intent intent =
new
Intent(Intent.ACTION_VIEW, Uri.parse(routeQuery));
intent.setPackage(
"com.nhn.android.nmap"
);
startActivity(intent);
}
else
{
Toast.makeText(
this
,
"현재 위치 정보를 가져오는 중입니다."
, Toast.LENGTH_SHORT).show();
}
}
}