【问题标题】:Remove default user's location icon删除默认用户的位置图标
【发布时间】:2014-09-30 00:10:41
【问题描述】:

我正在使用适用于 Android 的 Google Maps v2 开发应用程序,我设法将自定义图标放在用户的位置,但我无法删除默认图标,因此它会覆盖我的自定义图标,如图所示:

(现在就这么大了:p)

我的代码是这样的:

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

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    map.setMyLocationEnabled(true);

    map.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {

        @Override
        public void onMyLocationChange(Location location) {
            if (location == null)
                return;

            mPositionMarker = map.addMarker(new MarkerOptions()
            .flat(true)
            .icon(BitmapDescriptorFactory
                    .fromResource(R.drawable.logop1))
            .anchor(0.5f, 1f)
            .position(new LatLng(location.getLatitude(), location.getLongitude())));

        }
    });
}

所以: 1) 有没有办法去掉用户当前位置的默认蓝点?

2) 当我在“现实世界”中移动时,用户位置是否会更新(由于连接原因,我无法对其进行测试)还是我必须编写/覆盖更新用户位置的方法?

提前致谢

【问题讨论】:

标签: android google-maps-android-api-2


【解决方案1】:

您将不得不停止使用 GoogleMap.setMyLocationEnabled 并编写更多代码,包括拥有自己的 LocationClient 并添加 Circle 以确保准确性。

你必须自己做。 - 设置为假gmaps.getUiSettings().setMyLocationButtonEnabled(false);

  • 创建您自己的位置按钮
  • 如果您获得当前位置,请在其上设置一个带有您的图标的标记
  • 如果您点击您的位置按钮,移动相机并将其置于地图的中心

这将移除蓝点

【讨论】:

  • 感谢您的回答,真的很有帮助:)
【解决方案2】:

map.setMyLocationEnabled(true);删除线

【讨论】:

    【解决方案3】:

    感谢 joao2fast4u(笑)和ṁᾶƔƏň ツ。我遵循了您的建议,并设法使其发挥作用。由于我没有看到任何具体解决这个问题的答案,所以我在这里发布我的解决方案:

    package com.onsoftwares.ufvquest;
    import android.location.Location;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.widget.Toast;
    
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GooglePlayServicesClient;
    import com.google.android.gms.location.LocationClient;
    import com.google.android.gms.location.LocationListener;
    import com.google.android.gms.location.LocationRequest;
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.model.BitmapDescriptorFactory;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.Marker;
    import com.google.android.gms.maps.model.MarkerOptions;
    
    public class MapActivity extends ActionBarActivity implements LocationListener, GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener  {
    
    private GoogleMap map;
    private Marker mPositionMarker;
    private LocationClient mLocationClient;
    private LocationRequest mLocationRequest;
    private LatLng mLatLng;
    
    private boolean mUpdatesRequested = false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
    
        map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    
        mLocationClient = new LocationClient(this, this, this);
    
        mLocationRequest = LocationRequest.create();
    
        mLocationRequest.setInterval(5000);
    
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    
        // Set the interval ceiling to one minute
        mLocationRequest.setFastestInterval(1000);
    
        // Note that location updates are off until the user turns them on
        mUpdatesRequested = false;
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        mLocationClient.connect();
    };
    
    @Override
    protected void onStop() {
        if (mLocationClient.isConnected()) {
            mLocationClient.removeLocationUpdates(this);
            mLocationClient.disconnect();
        }
        super.onStop();
    };
    
    @Override
    public void onConnectionFailed(ConnectionResult arg0) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void onConnected(Bundle arg0) {
        mLocationClient.requestLocationUpdates(mLocationRequest, this);
    }
    
    @Override
    public void onDisconnected() {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void onLocationChanged(Location location) {
        // Get the current location
        Location currentLocation = mLocationClient.getLastLocation();
    
        // Display the current location in the UI
        if (currentLocation != null) {
            LatLng currentLatLng = new LatLng (currentLocation.getLatitude(), currentLocation.getLongitude());
            if (mPositionMarker == null) {
                mPositionMarker = map.addMarker(new MarkerOptions()
                                .position(currentLatLng)
                                .title("Eu")
                                .icon(BitmapDescriptorFactory.fromResource(R.drawable.male_user_marker)));
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15));
            } else
                mPositionMarker.setPosition(currentLatLng);
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多