如何在Android谷歌地图中将当前位置作为默认位置?

时间:2014-07-30 10:14:35

标签: android google-maps

在我的应用程序中,我使用地理编码和自动完成功能实现了谷歌地图。我已经完成了'片段',应用程序成功了。现在我想将我当前的位置显示为地图中的默认位置。如果我从那个页面出来然后回来也应该显示它。 在我的自动填充文本中,我可以搜索位置并显示成功。我想要的是在我没有搜索任何东西时将我当前的位置设置为默认位置。

我尝试在'OnResume()'

中添加以下内容
theMap.setMyLocationEnabled(true);

这有助于我标记当前位置,但我无法缩放并查看我的位置,因为默认显示“非洲”。即使你我当前的位置已被标记。

然后我在'OnResume'中调用了以下函数

public void getMyLocation()
        {

            theMap.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {

            @Override
            public void onMyLocationChange(Location location) {
                // TODO Auto-generated method stub
                Log.v("current location lat:", ""+location.getLatitude());
                Log.v("current location lng:", ""+location.getLongitude());                 
                theMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
                CameraUpdate center=
                        CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()),16);
                    CameraUpdate zoom=CameraUpdateFactory.zoomTo(12);

                    theMap.moveCamera(center);
                    theMap.animateCamera(zoom);
            }
        });
        }

此后,我的当前位置会在几秒钟后连续显示。我试图搜索一个地方。但这个地方只显示2-3秒,然后又移动到我当前的位置。我不知道该如何解决。

1 个答案:

答案 0 :(得分:2)

public static boolean isMyLocationSet = false;

public void getMyLocation()
        {
            isMyLocationSet = false;
            theMap.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {

            @Override
            public void onMyLocationChange(Location location) {
                if(isMyLocationSet)
                    return;
                isMyLocationSet = true;
                // TODO Auto-generated method stub
                Log.v("current location lat:", ""+location.getLatitude());
                Log.v("current location lng:", ""+location.getLongitude());                 
                theMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
                CameraUpdate center=
                        CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()),16);
                    CameraUpdate zoom=CameraUpdateFactory.zoomTo(12);

                    theMap.moveCamera(center);
                    theMap.animateCamera(zoom);
            }
        });
        }

试试这个

P.S。我在浏览器中写了这个,只是为了让你知道你应该做些什么。

如果您多次使用getMyLocation,请为位置监听器创建一个非静态类成员,并且不要在每次调用时创建一个新成员