Карта Google не загружается после запуска моего кода без ошибокAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Карта Google не загружается после запуска моего кода без ошибок

Сообщение Anonymous »

Код: Выделить всё

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MapsFragment extends Fragment implements OnMapReadyCallback {

SupportMapFragment mapFragment;

private GoogleMap mMap;
private LocationManager locationManager;
private LocationListener locationListener;
private static final String TAG = "MapsFragment";

private static final int PERMISSIONS_REQUEST_LOCATION = 100;

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(@NonNull Location location) {

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}

@Override
public void onProviderEnabled(String provider) {
}
};
}

@SuppressLint("MissingPermission")
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);

mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocation != null) {
LatLng currentLatLng = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15));
}
}

private void drawRoute(LatLng origin, LatLng destination) {
String apiKey = "AIzaSyB7Dxn7v2_8vyFin-mIq7Fms6qZy72Azfo";
String url = "https://maps.googleapis.com/maps/api/directions/json?origin=" + origin.latitude + "," + origin.longitude + "&destination=" + destination.latitude + "," + destination.longitude + "&key=" + apiKey;

RequestQueue queue = Volley.newRequestQueue(getActivity());

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray routes = response.getJSONArray("routes");
if (routes.length() > 0) {
JSONArray legs = routes.getJSONObject(0).getJSONArray("legs");
if (legs.length() >  0) {
JSONArray steps = legs.getJSONObject(0).getJSONArray("steps");
if (steps.length() > 0) {
PolylineOptions polylineOptions = new PolylineOptions();
for (int i = 0; i < steps.length(); i++) {
JSONObject step = steps.getJSONObject(i);
if (step.has("start_location")) {
JSONObject startLocation = step.getJSONObject("start_location");
LatLng startLatLng = new LatLng(startLocation.getDouble("lat"), startLocation.getDouble("lng"));
polylineOptions.add(startLatLng);
}
if (i == steps.length() - 1 && step.has("end_location")) {
JSONObject endLocation = step.getJSONObject("end_location");
LatLng endLatLng = new LatLng(endLocation.getDouble("lat"), endLocation.getDouble("lng"));
polylineOptions.add(endLatLng);
}
}

polylineOptions.color(Color.BLUE);
polylineOptions.width(10);
mMap.clear(); // clear existing polylines
mMap.addPolyline(polylineOptions);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error getting directions", error);
}
});

queue.add(request);
}

// Call this method wherever you want to draw the route
@SuppressLint("MissingPermission")
private void showRoute() {
LatLng originLatLng = new LatLng(9.2879, 4.1489);

@SuppressLint("MissingPermission") Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocation != null) {
LatLng currentLatLng = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
drawRoute(currentLatLng, originLatLng);
} else {
// Last known location not available, request location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}

}
}
Я ожидал проложить маршрут между двумя точками моего текущего местоположения и другой точкой, но карта Google вообще не загружается. У меня есть API карт Google, включен API направлений и API карт Google, но я не включил биллинг, может ли это быть причиной того, что
код работает отлично, но не делает того, что должен делать

Подробнее здесь: https://stackoverflow.com/questions/761 ... -no-errors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»