在当前位置添加标记

时间:2016-11-24 16:40:49

标签: android google-maps android-maps

我是Android编程的初学者,我目前正在开发谷歌地图。我想要做的是获取用户的当前位置,然后在该位置放置一个标记。

我正在练习这个,但我真的无法让它工作。这仅显示用户的当前位置。但我想要做的就是在它上面显示一个标记。有任何建议吗?

public class MapsActivity extends AppCompatActivity implements GoogleMap.OnMyLocationButtonClickListener,
    OnMapReadyCallback,
    ActivityCompat.OnRequestPermissionsResultCallback {

private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;
private boolean mPermissionDenied = false;
private GoogleMap mMap;

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

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.setOnMyLocationButtonClickListener(this);
    enableMyLocation();
}

private void enableMyLocation() {
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {

        PermissionUtils.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE,
                android.Manifest.permission.ACCESS_FINE_LOCATION, true);
    } else if (mMap != null) {

        mMap.setMyLocationEnabled(true);
    }
}

@Override
public boolean onMyLocationButtonClick() {
    Toast.makeText(this, "Showing current location", Toast.LENGTH_SHORT).show();


    return false;
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    if (requestCode != LOCATION_PERMISSION_REQUEST_CODE) {
        return;
    }

    if (PermissionUtils.isPermissionGranted(permissions, grantResults,
            Manifest.permission.ACCESS_FINE_LOCATION)) {

        enableMyLocation();
    } else {

        mPermissionDenied = true;
    }
}

1 个答案:

答案 0 :(得分:0)

找到你的最后位置 -

  • LatLng location = getLatLngFromLastLocation();

然后使用此代码块将标记放在地图上:

MarkerOptions markerOptions = new MarkerOptions()
                .position(location)
                .icon(getMarkerIcon(mProfileTheme.getColorCodeLight()));

public BitmapDescriptor getMarkerIcon(int color) {
        float[] hsv = new float[3];
        Color.colorToHSV(color, hsv);
        return BitmapDescriptorFactory.defaultMarker(hsv[0]);
    }