From b2c83b643e98e6d7f759d3370690c1ec4e2b9285 Mon Sep 17 00:00:00 2001 From: Sean Barbeau Date: Fri, 15 May 2020 14:32:15 -0400 Subject: [PATCH] chore: Add SplitStreetViewPanoramaAndMapDemoActivity in Kotlin (#203) Also update Java example to not use Hungarian notation --- ...tStreetViewPanoramaAndMapDemoActivity.java | 18 ++-- .../example/kotlindemos/DemoDetailsList.kt | 4 + ...litStreetViewPanoramaAndMapDemoActivity.kt | 88 ++++++++++++++++++ ...plit_street_view_panorama_and_map_demo.xml | 48 ++++++++++ .../kotlin/app/src/main/AndroidManifest.xml | 1 + .../app/src/main/res/drawable-hdpi/pegman.png | Bin 0 -> 1661 bytes .../app/src/main/res/drawable-mdpi/pegman.png | Bin 0 -> 1083 bytes .../src/main/res/drawable-xhdpi/pegman.png | Bin 0 -> 2289 bytes .../src/main/res/drawable-xxhdpi/pegman.png | Bin 0 -> 3512 bytes .../app/src/main/res/values/strings.xml | 4 + 10 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/SplitStreetViewPanoramaAndMapDemoActivity.kt create mode 100644 ApiDemos/kotlin/app/src/gms/res/layout/split_street_view_panorama_and_map_demo.xml create mode 100644 ApiDemos/kotlin/app/src/main/res/drawable-hdpi/pegman.png create mode 100644 ApiDemos/kotlin/app/src/main/res/drawable-mdpi/pegman.png create mode 100644 ApiDemos/kotlin/app/src/main/res/drawable-xhdpi/pegman.png create mode 100644 ApiDemos/kotlin/app/src/main/res/drawable-xxhdpi/pegman.png diff --git a/ApiDemos/java/app/src/gms/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java b/ApiDemos/java/app/src/gms/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java index 327d2ec0..7118ee6a 100755 --- a/ApiDemos/java/app/src/gms/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java +++ b/ApiDemos/java/app/src/gms/java/com/example/mapdemo/SplitStreetViewPanoramaAndMapDemoActivity.java @@ -44,9 +44,9 @@ public class SplitStreetViewPanoramaAndMapDemoActivity extends AppCompatActivity // George St, Sydney private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); - private StreetViewPanorama mStreetViewPanorama; + private StreetViewPanorama streetViewPanorama; - private Marker mMarker; + private Marker marker; @Override protected void onCreate(final Bundle savedInstanceState) { @@ -67,13 +67,13 @@ public class SplitStreetViewPanoramaAndMapDemoActivity extends AppCompatActivity new OnStreetViewPanoramaReadyCallback() { @Override public void onStreetViewPanoramaReady(StreetViewPanorama panorama) { - mStreetViewPanorama = panorama; - mStreetViewPanorama.setOnStreetViewPanoramaChangeListener( + streetViewPanorama = panorama; + streetViewPanorama.setOnStreetViewPanoramaChangeListener( SplitStreetViewPanoramaAndMapDemoActivity.this); // Only need to set the position once as the streetview fragment will maintain // its state. if (savedInstanceState == null) { - mStreetViewPanorama.setPosition(SYDNEY); + streetViewPanorama.setPosition(SYDNEY); } } }); @@ -85,7 +85,7 @@ public class SplitStreetViewPanoramaAndMapDemoActivity extends AppCompatActivity public void onMapReady(GoogleMap map) { map.setOnMarkerDragListener(SplitStreetViewPanoramaAndMapDemoActivity.this); // Creates a draggable marker. Long press to drag. - mMarker = map.addMarker(new MarkerOptions() + marker = map.addMarker(new MarkerOptions() .position(markerPosition) .icon(BitmapDescriptorFactory.fromResource(R.drawable.pegman)) .draggable(true)); @@ -96,13 +96,13 @@ public class SplitStreetViewPanoramaAndMapDemoActivity extends AppCompatActivity @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putParcelable(MARKER_POSITION_KEY, mMarker.getPosition()); + outState.putParcelable(MARKER_POSITION_KEY, marker.getPosition()); } @Override public void onStreetViewPanoramaChange(StreetViewPanoramaLocation location) { if (location != null) { - mMarker.setPosition(location.position); + marker.setPosition(location.position); } } @@ -112,7 +112,7 @@ public class SplitStreetViewPanoramaAndMapDemoActivity extends AppCompatActivity @Override public void onMarkerDragEnd(Marker marker) { - mStreetViewPanorama.setPosition(marker.getPosition(), 150); + streetViewPanorama.setPosition(marker.getPosition(), 150); } @Override diff --git a/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/DemoDetailsList.kt b/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/DemoDetailsList.kt index 0977c99b..4f24d905 100644 --- a/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/DemoDetailsList.kt +++ b/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/DemoDetailsList.kt @@ -45,6 +45,10 @@ class DemoDetailsList { R.string.street_view_panorama_navigation_demo_label, R.string.street_view_panorama_navigation_demo_details, StreetViewPanoramaNavigationDemoActivity::class.java), + DemoDetails( + R.string.split_street_view_panorama_and_map_demo_label, + R.string.split_street_view_panorama_and_map_demo_details, + SplitStreetViewPanoramaAndMapDemoActivity::class.java), DemoDetails(R.string.tags_demo_label, R.string.tags_demo_details, TagsDemoActivity::class.java), DemoDetails(R.string.ui_settings_demo_label, R.string.ui_settings_demo_details, diff --git a/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/SplitStreetViewPanoramaAndMapDemoActivity.kt b/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/SplitStreetViewPanoramaAndMapDemoActivity.kt new file mode 100644 index 00000000..cca60595 --- /dev/null +++ b/ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/SplitStreetViewPanoramaAndMapDemoActivity.kt @@ -0,0 +1,88 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.example.kotlindemos + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener +import com.google.android.gms.maps.StreetViewPanorama +import com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener +import com.google.android.gms.maps.SupportMapFragment +import com.google.android.gms.maps.SupportStreetViewPanoramaFragment +import com.google.android.gms.maps.model.* + +/** + * This shows how to create a simple activity with streetview and a map + */ +class SplitStreetViewPanoramaAndMapDemoActivity : AppCompatActivity(), + OnMarkerDragListener, OnStreetViewPanoramaChangeListener { + var streetViewPanorama: StreetViewPanorama? = null + var marker: Marker? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.split_street_view_panorama_and_map_demo) + val markerPosition = savedInstanceState?.getParcelable(MARKER_POSITION_KEY) ?: SYDNEY + + val streetViewPanoramaFragment = + supportFragmentManager.findFragmentById(R.id.streetviewpanorama) as SupportStreetViewPanoramaFragment? + streetViewPanoramaFragment?.getStreetViewPanoramaAsync { panorama -> + streetViewPanorama = panorama + streetViewPanorama?.setOnStreetViewPanoramaChangeListener( + this@SplitStreetViewPanoramaAndMapDemoActivity + ) + // Only need to set the position once as the streetview fragment will maintain + // its state. + savedInstanceState ?: streetViewPanorama?.setPosition(SYDNEY) + } + val mapFragment = + supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment? + mapFragment?.getMapAsync { map -> + map.setOnMarkerDragListener(this@SplitStreetViewPanoramaAndMapDemoActivity) + // Creates a draggable marker. Long press to drag. + marker = map.addMarker( + MarkerOptions() + .position(markerPosition) + .icon(BitmapDescriptorFactory.fromResource(R.drawable.pegman)) + .draggable(true) + ) + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putParcelable( + MARKER_POSITION_KEY, + marker?.position + ) + } + + override fun onStreetViewPanoramaChange(location: StreetViewPanoramaLocation) { + marker?.position = location.position + } + + override fun onMarkerDragStart(marker: Marker) {} + override fun onMarkerDragEnd(marker: Marker) { + streetViewPanorama?.setPosition(marker.position, 150) + } + + override fun onMarkerDrag(marker: Marker) {} + + companion object { + private const val MARKER_POSITION_KEY = "MarkerPosition" + + // George St, Sydney + private val SYDNEY = LatLng(-33.87365, 151.20689) + } +} \ No newline at end of file diff --git a/ApiDemos/kotlin/app/src/gms/res/layout/split_street_view_panorama_and_map_demo.xml b/ApiDemos/kotlin/app/src/gms/res/layout/split_street_view_panorama_and_map_demo.xml new file mode 100644 index 00000000..2a03e73a --- /dev/null +++ b/ApiDemos/kotlin/app/src/gms/res/layout/split_street_view_panorama_and_map_demo.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + diff --git a/ApiDemos/kotlin/app/src/main/AndroidManifest.xml b/ApiDemos/kotlin/app/src/main/AndroidManifest.xml index 869bfbed..22c37e68 100644 --- a/ApiDemos/kotlin/app/src/main/AndroidManifest.xml +++ b/ApiDemos/kotlin/app/src/main/AndroidManifest.xml @@ -57,6 +57,7 @@ + \ No newline at end of file diff --git a/ApiDemos/kotlin/app/src/main/res/drawable-hdpi/pegman.png b/ApiDemos/kotlin/app/src/main/res/drawable-hdpi/pegman.png new file mode 100644 index 0000000000000000000000000000000000000000..9508e91014425cd7023a5de7fd693dda0b46dd49 GIT binary patch literal 1661 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 LNkvXXu0mjf1TJC^ literal 0 HcmV?d00001 diff --git a/ApiDemos/kotlin/app/src/main/res/drawable-xxhdpi/pegman.png b/ApiDemos/kotlin/app/src/main/res/drawable-xxhdpi/pegman.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff1e3359150230406723d649f86daf6f6c8db4f GIT binary patch literal 3512 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 m4agxGD9-FF!RWY^!2BN=D2!G_p(COI0000Go to San Francisco Go to Santorini + + Street View Panorama and Map + Demonstrates how to show a Street View panorama and map. + Tags Demonstrates how to get and set tags on API objects.