android map将currentLocation标记添加到远离蓝点

时间:2017-03-07 07:34:35

标签: android dictionary

我正在使用谷歌地图api v2。我有一个按钮,可以将标记添加到我当前的位置。

地图可以让我的位置正确但有时(不是每次)当我想要将标记添加到该位置时,标记会远离蓝点。

我想将我的标记完全添加到蓝点上。

enter image description here

这是我的findMe按钮的代码:

ImageButton findMyLocation_btn = (ImageButton) findViewById(R.id.findme);
    if (findMyLocation_btn != null) {
        findMyLocation_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                    buildAlertMessageNoGps();
                } else {
                    currentLocation = mMap.getMyLocation();

                    if ( marker1 == null && currentLocation != null) {
                        new onMyLocationClick().execute();
                    }
                }
            }
        });

和onMyLocationClick()

private class onMyLocationClick extends AsyncTask{

    @Override
    protected Object doInBackground(Object[] params) {


            Geocoder gc = new Geocoder(MainActivity.this);
            List<Address> list = null;
            try {
                list = gc.getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(), 1);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            if (list != null) {
                add = list.get(0);
            }
            try {
                origin = new LatLng(add.getLatitude(),add.getLongitude());
            } catch (Exception ex) {
                ex.printStackTrace();
            }

        return null;
    }

    @Override
    protected void onPostExecute (Object o){

            createMarker(add.getLatitude(), add.getLongitude(), add.getLocality(), add.getSubLocality());
        }
}

1 个答案:

答案 0 :(得分:0)

基于Google Maps doc:

  

此方法已弃用。请改用com.google.android.gms.location.FusedLocationProviderApi。 FusedLocationProviderApi提供改进的位置查找和功率使用,并由&#34;我的位置&#34;蓝点。

获取当前位置的代码是这样的:

class CustomerSerializer(serializers.ModelSerializer):
    latest_event_name = serializers.ReadOnlyField()

    class Meta:
        model = Customer
        fields = '__all__'

要获得更高级的解决方案,您可以使用Google提到的FusedLocationProvider:https://developer.android.com/training/location/retrieve-current.html#GetLocation