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

java Android Google Maps V2 - XML中的MapView