G Maps Android Java,最后一个已知的位置标记颜色与位置标记不同,但在运行的应用程序上显示相同的标记颜色

问题描述 投票:2回答:1

//专注于代码的最后else块和OnLocationChanged方法(位于OnMapReady()方法)

此else块(包含最后一个已知的位置方法的代码)和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));
        }
    }
}
java android google-maps geolocation google-maps-markers
1个回答
0
投票

像第一个标记一样,将黄色图标添加到第二个标记中,如下所示:

} 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));
}

截屏:

enter image description here

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.