【问题标题】:How can we get current location as default location in Android google map?我们如何将当前位置作为 Android 谷歌地图中的默认位置?
【发布时间】:2014-07-30 10:14:34
【问题描述】:

在我的应用程序中,我使用地理编码和自动完成实现了谷歌地图。我已经在“片段”中完成了,该应用程序成功了。现在我想在我的地图中显示我当前的位置作为默认位置。如果我从那个页面出去然后回来,它也应该显示出来。 在我的自动完成文本中,我可以搜索地点并成功显示。我只想在不搜索任何内容时将当前位置设置为默认位置。

我尝试在“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 秒,然后它又移动到了我当前的位置。不知道怎么解决。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:
    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);
                }
            });
            }
    

    试试这个

    附:我在浏览器中写这个只是为了让你知道你应该做什么。

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

    【讨论】:

    • 这个变化是什么让它在停止更新之前获得 1 个位置更新
    • 它不会让地图跟随你去任何地方
    • 您可以通过将CameraUpdateFactory.zoomTo(12); 行更改为15 左右来编辑缩放
    • 您还可以删除 isMyLocationSet = true; 并将其放在您加载场地的任何位置,这将继续更新位置,直到您在地图上放置标记
    • 修复了吗?还是不?
    猜你喜欢
    • 2017-03-06
    • 2017-04-22
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多