Android和Maps v2:如何获取用户位置?

3
我有许多工作要完成,在连续工作8个小时后,我需要寻求帮助。我已经成功在Android上设置了V2地图,并在我的设备上进行了测试,但我不知道在哪里可以找到能够帮助我将其构建为更高级地图应用程序的资源,而且我甚至无法显示用户的位置。我正在使用具有互联网连接的Android手机进行调试。我已经阅读了10多个Stack Overflow问题,并浏览了一些Google文档。
以下是我的类:
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity  {


  private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     setUpMapIfNeeded();

}

  @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }



  private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (mMap != null) {
                setUpMap();
            }
        }
    }


  private void setUpMap() {

      mMap.setMyLocationEnabled(true);
      mMap.getMyLocation();



    }
}

我需要逐步获取用户位置,然后允许用户搜索地点并存储它们,在V2地图中是否有可能实现?

非常感谢!

3个回答

7

我需要构建一个功能,先获取用户的位置,然后允许用户搜索地点并存储它们,有人认为这在V2地图中是否可能?

你需要通过LocationManager在任何Android应用程序中一样找到用户的位置。可选地,您可以通过在GoogleMap上调用setLocationSource()来将这些位置提供给Maps V2。

更新

如果在GoogleMap上使用setMyLocationEnabled(true),则可以通过在GoogleMap上调用getMyLocation()检索位置。这比自己编写位置跟踪更简单,但是您无法获得太多控制权(例如,您不会获得移动的通知)。


我已经尝试按照您的建议去做,但是我似乎还缺少了一些东西。如果您有时间,能否向我展示如何完成这个任务?我一直在找到一些地理点,但它们现在好像已经过时了?谢谢! - deucalion0
@deucalion0:请查看此示例项目:https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Location - CommonsWare
谢谢你的帮助,我花了一个半小时去查看你的所有代码,这对我来说太多了,我放弃了,但我又回来尝试了。我不会让这打败我的! :) 我会去看看你更新后的答案。你知道我的问题是,我只想看到每个部分逐步完成,太多的代码会让我混乱:) 谢谢! - deucalion0
@deucalion0:嗯,在我的存储库中的MapsV2/目录中还有其他示例项目,其中一些更简单,尽管那个是唯一一个与位置相关的工作。顺便说一句,覆盖所有这些示例的书籍章节应该在下周晚些时候发布。 - CommonsWare
谢谢CommonsWare,我很感激你的帮助!我迫不及待地想看这本书!我会继续查看你的代码库! :) - deucalion0
显示剩余3条评论

1

1
今天我收到了一封来自Google Maps的电子邮件,其中提到了在新的Google Maps API v2上获取当前位置的问题。自上个月以来,包括我在内的许多开发者都发现,在新的Google Maps API v2上获取当前位置存在问题或不便之处。这个问题是:使用GoogleMap并启用我的位置(setMyLocationEnabled(true)),没有办法(我是说没有适当的方式,因为没有回调)通过默认/内置的LocationSource通知位置更改。应该有一种方法来通知用户/我的位置的变化。API v1有一种方法可以做到这一点。没有它需要构建一个复杂的算法,可能与GoogleMap当前显示的内容不同步。以上问题链接在这里。http://code.google.com/p/gmaps-api-issues/issues/detail?id=4644然后,今天Google地图团队向许多开发者发送了一封电子邮件:“这个问题将在Maps Android API的下一个版本中得到解决”。

就是这样全部了..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接