2017-08-29 77 views
1

我建立了一個商店的Android應用程序,問題是,我無法在地圖上顯示那家店,我想說明這樣的事情(與店名):
enter image description here
我有嘗試兩種方式:
1)得到長& LAT從谷歌地圖和照相機設置到該位置:Android - 如何顯示谷歌地圖上的確切位置?

LatLng location = new LatLng(MY_LAT, MY_LONG); 
map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 20)); 

2)使用地理編碼器:

Address address = geocoder.getFromLocationName(MY_ADRESS, 1).get(0); 
LatLng location = new LatLng(address.getLatitude(), address.getLongitude()); 
map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 20)); 

在這兩種情況下,它顯示錯誤的地方(不是我想要的)(地理編碼器只返回一個地址,我檢查了列表大小)。
我相信有一個更好的方法來做到這一點,有什麼建議嗎?
謝謝

回答

1

所以我發現的唯一的解決辦法是通過ID進行搜索的地方,這裏是你如何能做到這一點:
1)here得到的地方ID(如果你的業務不顯示地圖上,那麼我不能幫助,如果任何人知道如何解決這個問題,請告訴我們)
enter image description here 在下面我會假設你複製的地方ID和存儲它AA不變命名爲:YOUR_PLACE_ID
2)在您的項目上啓用適用於Android的Google Places API:https://console.cloud.google.com/home(我想您已經爲您的應用創建了一個Google項目,並且已經啓用Google地圖API)
3)添加compile 'com.google.android.gms:play-services:11.0.4'(11.0.4是當前版本)到您的build.gradle(APP)

4)在AndroidManifests.xml添加所需的權限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

4)聲明在你的類實例變量:GoogleApiClient mGoogleApiClient ;
5)您的onCreate初始化(例如):)

mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(Places.GEO_DATA_API).build(); 
mGoogleApiClient.connect(); 

6獲得的平面座標:

Places.GeoDataApi.getPlaceById(mGoogleApiClient, YOUR_PLACE_ID) 
      .setResultCallback(new ResultCallback<PlaceBuffer>() { 
       @Override 
       public void onResult(PlaceBuffer places) { 
        LatLng location = places.get(0).getLatLng(); 
        if (places.getStatus().isSuccess() && places.getCount() > 0) { 
         Toast.makeText(MapActivity.this,"Place coordinates :" + location,Toast.LENGTH_LONG).show(); 

        } else { 
         Toast.makeText(MapActivity.this,"Failed to get the location",Toast.LENGTH_LONG).show(); 
        } 
        places.release(); 
       } 
      }); 
相關問題