2016-11-24 61 views
2

我是Android编程的初学者,我目前正在研究Google地图。我想要做的是获取用户的当前位置,然后在该位置放置一个标记。在当前位置添加标记

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

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; 
    } 
} 
+0

在文档部分:显示当前位置的谷歌地图(HTTP://计算器。 com/documentation/android/170/google-maps-api-v2-for-android/5557/show-current-location-in-a-google-map) –

+0

@MarkusKauppinen谢谢!现在就开始工作了。 – Gelly

回答

0

获取你最后位置 -

  • 经纬度位置= 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]); 
 
    }

相关问题