2017-08-29 69 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(); 
       } 
      }); 
相关问题