0

我正在制作一个 android 应用程序,我将在其中使用当前位置的名称在 wikipedia 上搜索其详细信息。例如,如果我在杜莎夫人蜡像馆,首先我会得到当前位置坐标,然后在反向地理编码后,它的信息将在维基百科上搜索并显示在我的应用程序中。

我有我当前的位置坐标,但问题是当我对坐标进行反向地理编码时,我没有得到地名。例如坐标33.651826, 73.156593,当我反向地理编码时,我得到了Park Road, Pakistan,因为这个地方的名字是COMSATS Institute of Information Technology

我 在名称节点中的 Google Places API(地点搜索)中获得COMSATS 信息技术学院。那么有没有一种方法可以使用 Google Places API 的名称节点作为我当前的位置名称,而不是任何地方搜索或其他功能?

或者有什么方法可以使用 lat lon 获取地名?

4

2 回答 2

2

在Google Play 服务 7.0中引入的Places API for Android提供了一个使用PlaceDetectionApi.getCurrentPlace()获取当前位置的 API 。该方法使用用户的当前位置,然后返回用户可能所在位置的列表。然后,您可以使用Place.getName()检索位置的名称并将其显示给用户。

如果您希望用户从他们周围选择一个位置(而不是为他们选择最上面的结果),您可以使用Place Picker UI

于 2015-05-19T20:59:27.550 回答
1

定义一个 GoogleApiClient 对象,然后调用这个方法

private void guessCurrentPlace() {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace( mGoogleApiClient, null );
result.setResultCallback( new ResultCallback<PlaceLikelihoodBuffer>() {
    @Override
    public void onResult( PlaceLikelihoodBuffer likelyPlaces ) {

        PlaceLikelihood placeLikelihood = likelyPlaces.get( 0 );
        String content = "";
        if( placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty( placeLikelihood.getPlace().getName() ) )
            content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
        if( placeLikelihood != null )
            content += "Percent change of being there: " + (int) ( placeLikelihood.getLikelihood() * 100 ) + "%";
        mTextView.setText( content );

        likelyPlaces.release();
    }
});
}

参考:http ://code.tutsplus.com/articles/google-play-services-using-the-places-api--cms-23715

于 2015-05-20T20:10:59.297 回答