googleMap.getMyLocation();无法获取当前位置

Posted

技术标签:

【中文标题】googleMap.getMyLocation();无法获取当前位置【英文标题】:googleMap.getMyLocation(); cannot get current location 【发布时间】:2014-05-31 00:14:22 【问题描述】:

我想制作一个程序来计算一些地方到我当前位置的距离,但是我的 googleMap.getMyLocation();不能正常工作。

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setMyLocationEnabled(true);   
googleMap.getUiSettings().setCompassEnabled(false);
mylocation = googleMap.getMyLocation();
direction = new GMapV2Direction();

LatLng from, to;
from = new LatLng(-7.26071409, 112.80674726);
for(int i=0; i<lat.length; i++)    
    to = new LatLng(lat[i], lon[i]);
    doc = direksi.getDocument(from, to, GMapV2Direction.MODE_DRIVING);
    distance[i] = (double)direction.getDistanceValue(doc) / 1000;

我在lat[]和lon[]中保存了一些地方的经纬度。 LatLng 'from' 是我的位置,'to' 是我的目的地。 当我改变时出现问题

from = new LatLng(-7.26071409, 112.80674726);
to
from = new LatLng(mylocation.getLatitude(), mylocation.getLongitude());

我想在不打开 googlemaps 的情况下进行计算。当我触摸地图按钮作为弹出窗口时,谷歌地图将出现。因此无需打开 googlemap 即可进行计算

请帮帮我

【问题讨论】:

getMyLocation(),this method is deprecated。请改用 LocationClient。 您使用的是谷歌地图 v2 吗? @Alex 我不知道如何使用 LocationClient。能详细点吗? @android 是的,我正在使用谷歌地图 v2 api 【参考方案1】:

试试这个...希望对你有帮助

LocationManager locationManager = (LocationManager)
        getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();

Location location = locationManager.getLastKnownLocation(locationManager
        .getBestProvider(criteria, false));
double latitude = location.getLatitude();
double longitude = location.getLongitude();

【讨论】:

不,它没有,因为您甚至没有检查 getBestProvider 和 getLastKnownLocation 是否为空!【参考方案2】:

这是我给你的代码,我希望这对你有所帮助......如果你认为它没有正确的sintaxis,请编辑它......

这项工作适用于 android 4.x 和 5.x 和 6.x,我没有在 android 7 中进行测试

//I use this like global var to edit or get informacion about google map
GoogleMap gMap;

@Override
public void onMapReady(GoogleMap googleMap) 
    gMap = googleMap;

if (ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
                        ActivityCompat.requestPermissions(Activity_Map.this,new String[]android.Manifest.permission.ACCESS_FINE_LOCATION, 1);
                    else
                        if(!gMap.isMyLocationEnabled())
                            gMap.setMyLocationEnabled(true);

                        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                        Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

                        if (myLocation == null) 
                            Criteria criteria = new Criteria();
                            criteria.setAccuracy(Criteria.ACCURACY_COARSE);
                            String provider = lm.getBestProvider(criteria, true);
                            myLocation = lm.getLastKnownLocation(provider);
                        

                        if(myLocation!=null)
                            LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());
                            gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 14), 1500, null);
                        
                    


【讨论】:

【参考方案3】:

getMyLocation() => this method is deprecated。您需要改用LocationClient

您可以找到有关LocationClient 以及如何获取当前位置here 的信息

【讨论】:

以上是关于googleMap.getMyLocation();无法获取当前位置的主要内容,如果未能解决你的问题,请参考以下文章