Man*_*epa 9 android google-places-api google-places kotlin google-places-autocomplete
我们有一个共享位置的要求,这是与用户界面和功能类似的类似WhatsApp的位置。
我发现Google Place Picker已过时,并且已迁移到Places Clients。
像这样说

当他们试图搜索时

可能是,我不擅长解释我的想法,但总的来说,我正在寻求上述实现。
而且我还从下面的网址中得知Google会对搜索或地点收费,
https://github.com/rtchagas/pingplacepicker
我所累的是
编码部分:
Places.initialize(applicationContext, "Google API Key")
placesClient = Places.createClient(this)
val autocompleteFragment =
getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment) as AutocompleteSupportFragment
autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));
autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener {
override fun onPlaceSelected(p0: Place) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onError(p0: Status) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
});
val intent = Autocomplete.IntentBuilder(
AutocompleteActivityMode.FULLSCREEN, fields
)
.build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
在搜索了两个三个位置后,出现错误消息“重试”。不知道原因。
错误:
非常感谢您的帮助。
自从我在应用程序中使用地点选择器以来,我遇到了同样的问题,但由于谷歌决定删除它,我别无选择,只能找到解决方案!
我决定使用谷歌地图来重新创建地点选择器的近距离体验。
首先,我将地图创建为全屏,然后将ImageView(标记)作为其叠加层,如下所示:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinator_layout"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.streetdev.goodnecity.SelectLocationPicker" />
<ImageView
android:layout_centerInParent="true"
android:src="@drawable/ic_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="56dp"
android:layout_height="56dp"
app:backgroundTint="@color/colorPrimaryDark"
android:src="@drawable/ic_plus"
android:layout_margin="16dp"
app:layout_anchor="@id/map"
app:layout_anchorGravity="bottom|end" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
因此,每当用户在地图上导航时,标记就会像地点选择器一样停留在地图的中心。
现在你所要做的就是启动你的地图选择器startActivityForResult,你必须使用gps来处理cameraPosition(如果它可用的话),然后一旦你想返回结果(对我来说,我点击Fab按钮),你就可以了。可以这样得到结果:
LatLng latng = mMap.getCameraPosition().target;
Intent returnIntent = new Intent();
returnIntent.putExtra("result",String.valueOf(latng.latitude)+";"+String.valueOf(latng.longitude));
setResult(Activity.RESULT_OK,returnIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
最后一步是处理结果onActivityResult,你得到你的结果,你做一个split使用";"来分离纬度和经度
希望我的例子对某人有所帮助!
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |