从谷歌地图意图获取lat-lng

时间:2016-04-04 10:26:35

标签: android google-maps-android-api-2

我是android世界的新人。试图从谷歌地图获得当前的坐标。我做了一个示例应用程序,打开谷歌地图作为意图(从Android网站)。我想做的是从那个意图中得到lat-lng。我到目前为止已经做了 -

   public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
       // mMap = googleMap;
        Uri uri = Uri.parse("geo:latitude,longitude?z=17");
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
}

更新: 我知道我可以在android中获得当前的坐标。 但我想从谷歌地图意图(当前显示标记位置)得到协调?

1 个答案:

答案 0 :(得分:1)

请参阅GoogleMap class documentation

  

公共最终位置 getMyLocation()
  ......

     

返回当前   显示的用户位置,如果没有位置数据,则为null   可用。

     

返回

     
      
  • 当前显示的用户位置。
  •   
     

抛出

     
      
  • 如果未启用my-location图层,则为IllegalStateException。
  •   

然后它又说:

  

不推荐使用此方法。使用   com.google.android.gms.location.FusedLocationProviderApi。

因此,如果您真的想要,可以使用getMyLocation(),但不建议这样做。它可能会返回null。或抛出异常。

代码将类似于:

    @Override
    public void onMapReady(GoogleMap googleMap) {
        // mMap = googleMap;
        Location myLocation;             

        try {
            myLocation = googleMap.getMyLocation();
        }
        catch (IllegalStateException e) {
            // Handle the exception.
        }

        if (!myLocation == null) {
            // Do something with the location if it's not null...
        }
        else {
            // Handle the null location.
        }

        Uri uri = Uri.parse("geo:latitude,longitude?z=17");
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }