gpt4 book ai didi

android - 单击 android 中的标记时如何更改标记颜色?

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:43 25 4
gpt4 key购买 nike

我正在开发一个应用程序,因为我用红色显示当前位置,用 HUE_AZURE 颜色显示周围位置,现在我试图在单击标记时用 HUE_GREEN(绿色)更改这两种颜色,我写了一些代码,但它不能正常工作。当我单击标记时, map 会转到起始位置并仅更改一次颜色,这是我的问题。

我的代码

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_map_when_login);

_googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapId)).getMap();

LocationManager service = (LocationManager)getSystemService(LOCATION_SERVICE);

boolean enableGPS = service.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean enableWiFi= service.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Log.e("GPS",""+enableGPS);


service = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = service.getBestProvider(criteria, true);


service.requestLocationUpdates(provider, 0, 0, this);


if(_googleMap==null){
Toast.makeText(getApplicationContext(), "Google Map Not Available",
Toast.LENGTH_LONG).show();
}





}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

//locationManger.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
this);
//_googleMap.clear();
ArrayList<HashMap<String, String>> arl = (ArrayList<HashMap<String, String>>)
getIntent().getSerializableExtra("arrayList");


if(location!=null){
latitude = location.getLatitude();
langitude = location.getLongitude();
LatLng latlang = new LatLng(latitude, langitude);

myPosition = new LatLng(latitude, langitude);

}
if(arl.size()!=0){


for(int j = 0;j<arl.size();j++){


String lat =arl.get(j).get("lat").toString();
String lng =arl.get(j).get("lng").toString();
if ( !lat.trim().equals("") && !lng.trim().equals("") )
{
double Hlat = Double.parseDouble(lat.trim());
double Hlong= Double.parseDouble(lng.trim());

dabaseLocations =new LatLng(Hlat, Hlong);

getOtherLocation(dabaseLocations);
getCurrentLocation(myPosition);
// Show current location with database locations

}
}
}
else{
// Show Current Location Only

getCurrentLocation(myPosition);
}
_googleMap.setOnMarkerClickListener(this);

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}
private boolean getOtherLocation(LatLng location){
_googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location,10));
mCustomerMarker = _googleMap.addMarker(new MarkerOptions()
.position(location)
.title("other")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.flat(true));

return true;

}
private boolean getCurrentLocation(LatLng location){
_googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location,10));
currentMarker=_googleMap.addMarker(new
MarkerOptions().position(location).title(TITILE));
return true;
}

@Override
public boolean onMarkerClick(final Marker arg0) {
// TODO Auto-generated method stub

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
ShowMapWhenLoginActivity.this);

// set title
alertDialogBuilder.setTitle("Favourate Location");

// set dialog message
alertDialogBuilder
.setMessage("Is it Your favourate location")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
if(getCurrentLocation(myPosition)){
_googleMap.addMarker(new MarkerOptions()
.position(myPosition)

.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.flat(true));
Toast.makeText(getApplicationContext(),
"Marker Clicked: " + a
rg0.getPosition(), Toast.LENGTH_LONG)
.show();
}
else{
_googleMap.addMarker(new MarkerOptions()
.position(dabaseLocations)

.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.flat(true));
}


}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();

// show it
alertDialog.show();
return true;
}

最佳答案

/** Called when the map is ready. */
@Override
public void onMapReady(GoogleMap map) {
mMap = map;

/* Your configuration*/

// Set a listener for marker click.
mMap.setOnMarkerClickListener(this);
}

/** Called when the user clicks a marker. */
@Override
public boolean onMarkerClick(final Marker marker) {

marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
return false;
}

关于android - 单击 android 中的标记时如何更改标记颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22316960/

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