G Maps Android Java,最后一个已知的位置标记颜色与位置标记不同,但在运行的应用程序上显示相同的标记颜色
Posted
技术标签:
【中文标题】G Maps Android Java,最后一个已知的位置标记颜色与位置标记不同,但在运行的应用程序上显示相同的标记颜色【英文标题】:G Maps Android Java, last known location marker color different from Marker for location changed,but showing same marker color on running app 【发布时间】:2020-04-18 23:16:37 【问题描述】://关注代码的最后一个 else 块和 OnLocationChanged 方法(在 OnMapReady() 方法)
这个else块(包含lastknown location方法的代码)和onLocationChanged方法
包含正在更改的位置的代码(这里通过从扩展控件传递 可与模拟器一起使用,即单击模拟器中最下方的选项会打开该框。)
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
LocationManager locationManager;
LocationListener locationListener;
private GoogleMap mMap;
@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);
@Override
public void onMapReady(final GoogleMap googleMap)
mMap = googleMap;
locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationListener=new LocationListener()
@Override
public void onLocationChanged(Location location)
mMap.clear();
LatLng place = new LatLng(location.getLatitude(), location.getLongitude());
mMap.addMarker(new MarkerOptions().position(place).title("Marker in Sydney").icon(BitmapDescriptorFactory.defaultMarker(HUE_YELLOW)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(place));
mMap.animateCamera(CameraUpdateFactory.zoomTo(3));
@Override
public void onStatusChanged(String s, int i, Bundle bundle)
@Override
public void onProviderEnabled(String s)
@Override
public void onProviderDisabled(String s)
;
// Add a marker in Sydney and move the camera
if(Build.VERSION.SDK_INT<23)
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
else
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this,new String[]Manifest.permission.ACCESS_FINE_LOCATION,1);
else
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
Location lastknownlocation=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
LatLng position=new LatLng(lastknownlocation.getLatitude(),lastknownlocation.getLongitude());
mMap.addMarker(new MarkerOptions().position(position).title("The Location is"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(position));
【问题讨论】:
你还有这个问题吗? 是的,我仍然面临同样的问题,感谢您的关注,我尝试了很多,但我没有找到问题所在,一切都很好。 好的,我刚刚运行了您的代码,如果我理解正确,问题是您在最终else
条件中的标记图标不像onLocationChanged
中的那样是黄色的,对?如果是这样,您需要做的就是将此颜色添加到该标记。让我在几分钟内写出答案。
【参考方案1】:
将黄色图标添加到您的第二个标记,就像您对第一个标记所做的那样,如下所示:
else
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Location lastknownlocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
LatLng position = new LatLng(lastknownlocation.getLatitude(), lastknownlocation.getLongitude());
mMap.addMarker(new MarkerOptions().position(position).title("The Location is").icon(BitmapDescriptorFactory.defaultMarker(HUE_YELLOW)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(position));
截图:
希望这会有所帮助!
【讨论】:
以上是关于G Maps Android Java,最后一个已知的位置标记颜色与位置标记不同,但在运行的应用程序上显示相同的标记颜色的主要内容,如果未能解决你的问题,请参考以下文章
Android:自动选择调试/发布 Maps api 密钥?
Google Maps SDK 错误在最后一小时开始弹出 [重复]
com.google.android.gms.maps.MapFragment:无法解析符号“地图”
java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/maps/GeoPoint
java.lang.NullPointerException: MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallba