gpt4 book ai didi

java - Android Studio Google map 应用程序不再显示 map

转载 作者:行者123 更新时间:2023-12-01 17:23:05 26 4
gpt4 key购买 nike

我一直在为一个项目开发一个小型应用程序,该应用程序旨在显示用户的位置并在用户移动时跟踪他们,还让他们显示标记。直到今天我启动应用程序并发现它不再显示 map 时,一切都工作得很好。 Google Logo 与缩放选项一起显示在页面底部,但 map 本身永远不会加载。这是我的 map Activity 的代码。


import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.FragmentActivity;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.firebase.firestore.FirebaseFirestore;

import java.io.IOException;
import java.util.List;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{

private GoogleMap mMap;
LocationManager locationManager;
private static final int REQUEST_LOCATION_PERMISSION = 1;
Marker mMarker;
LocationListener locationListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
}
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
//get the location name from latitude and longitude
Geocoder geocoder = new Geocoder(getApplicationContext());
try {
List<Address> addresses =
geocoder.getFromLocation(latitude, longitude, 1);
String result = addresses.get(0).getLocality()+":";
result += addresses.get(0).getCountryName();
LatLng latLng = new LatLng(latitude, longitude);

if (mMarker != null){
mMarker.remove();
mMarker = mMap.addMarker(new MarkerOptions().position(latLng).title(result));
mMap.setMaxZoomPreference(21);

}
else {

mMarker = mMap.addMarker(new MarkerOptions().position(latLng).title(result));
mMap.setMaxZoomPreference(21);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 20.0f));

}

} catch (IOException e) {
e.printStackTrace();
}
}

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

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 400, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 400, 0, locationListener);
}




@Override
public void onMapReady(GoogleMap googleMap){
mMap = googleMap;
mMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.style_json));
//Setting Map zoom controls to be enabled
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setZoomGesturesEnabled(true);
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener(){
public void onMapLongClick(LatLng latLng){
//creating marker
MarkerOptions markerOptions = new MarkerOptions();
//set marker position
markerOptions.position(latLng);
//set latitude and longitude on marker
markerOptions.title(latLng.latitude+ " : " + latLng.longitude);
//clear the previous click position
mMap.clear();
//add marker on map
mMap.addMarker(markerOptions);
}
});

}

@Override
protected void onStop() {
super.onStop();
locationManager.removeUpdates(locationListener);
}
}

这是 map Activity 运行后我重复收到的错误消息

W/System.err: java.io.IOException: grpc failed
W/System.err: at android.location.Geocoder.getFromLocation(Geocoder.java:136)
at com.example.pubapp.MapsActivity$1.onLocationChanged(MapsActivity.java:65)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:371)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:300)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:316)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

就像我说的,这个应用程序昨晚运行得非常好,从那时起,除了添加一些当前未使用的 Activity 之外,我没有真正更改任何内容。我已经尝试过更改 API key 、使用新的模拟器并在 android studio 上进行全新安装,但到目前为止没有任何效果。

最佳答案

今天打开项目,发现重启电脑已经解决了问题,不再出现错误, map 也正常显示。

关于java - Android Studio Google map 应用程序不再显示 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61255311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com