@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
myDBHelper= new DBHelper(this);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
Cursor cursor_for_test= myDBHelper.getAll();
if(cursor_for_test.getCount()==0) {
new Thread(new Runnable() {
public void run() {
Log.d("TESTING", "cursor_for_test");
parsingJSON();
}
}).start();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 10:
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) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.INTERNET}
,10);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates("gps", 5000, 0, listener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
}
return;
}
break;
default:
break;
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
Log.d("TESTING","onMapReady");
if(locationManager!=null) {
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocation != null && latitude != 0.0 && longitude != 0.0) {
latitude = lastKnownLocation.getLatitude();
longitude = lastKnownLocation.getLongitude();
}
latLng = new LatLng(latitude, longitude);
marker = mMap.addMarker(new MarkerOptions().position(latLng).title("My position"));
mMap.animateCamera(CameraUpdateFactory.zoomTo(7.0f));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.getUiSettings().setCompassEnabled(true);
circleOptions = new CircleOptions()
.center(latLng)
.radius(radius)
.strokeColor(Color.RED);
circle = mMap.addCircle(circleOptions);
circle.setVisible(true);
currentZoomLevel = getZoomLevel(circle);
animateZomm = currentZoomLevel;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, animateZomm));
mMap.animateCamera(CameraUpdateFactory.zoomTo(currentZoomLevel), 2000, null);
puttingMarkers();
}
}
public String loadJson(){
String json = null;
byte[] buffer = null;
InputStream is;
try {
is = getAssets().open("json.json");
int size = is.available();
buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return json;
}
public void parsingJSON(){
try {
JSONArray jsonArray= new JSONArray(loadJson());
for(int i=0; i<jsonArray.length();i++){
JSONObject c = jsonArray.getJSONObject(i);
String CommonName = c.getString("CommonName");
String Category = c.getString("Category");
Category= parseString(Category);
JSONObject obj = c.getJSONObject("geoData");
String coordinates = obj.getString("coordinates");
coordinates= coordinates.substring(1);
coordinates= coordinates.substring(0, coordinates.length()-1);;
Log.d("TESTING","coordinates= "+coordinates);
db = myDBHelper.getWritableDatabase();
latitude_for_insert=coordinates.substring(coordinates.indexOf(","));
longitude_for_insert=coordinates.substring(0,coordinates.indexOf(","));
coordinates=latitude_for_insert+","+longitude_for_insert;
coordinates= coordinates.substring(1);
Log.d("TESTING","coordinates_new= "+coordinates);
myDBHelper.insert(CommonName,Category,coordinates);
}
} catch (JSONException e) {
Log.d("TESTING","JSONException= "+e);
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
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) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION,android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.INTERNET}
,10);
}
return;
}
else{
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates("gps", 5000, 1, listener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 1, listener);
}
}
@Override
protected void onPause() {
if(locationManager!=null){
locationManager.removeUpdates(listener);
}
super.onPause();
}
}
Приложение открывается, карта грузится, но по координатам 0.0, 0.0 . После нахождения координат местоположения карта должна обновиться, но не обновляется.