[go: nahoru, domu]

Skip to content

Commit

Permalink
chore: Add LiteDemoActivity in Kotlin (#210)
Browse files Browse the repository at this point in the history
Also apply following changes to Java version:
* Refactor variables to remove Hungarian notation
  • Loading branch information
barbeau committed May 21, 2020
1 parent da59043 commit 0494813
Show file tree
Hide file tree
Showing 6 changed files with 277 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public class LiteDemoActivity extends AppCompatActivity implements
new LatLng(-19.663970, 137.724609), new LatLng(-23.202307, 135.395508),
new LatLng(-19.705347, 129.550781)};

private GoogleMap mMap;
private GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -80,25 +80,25 @@ protected void onCreate(Bundle savedInstanceState) {
*/
public void showDarwin(View v) {
// Wait until map is ready
if (mMap == null) {
if (map == null) {
return;
}

// Center camera on Adelaide marker
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(DARWIN, 10f));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(DARWIN, 10f));
}

/**
* Move the camera to center on Adelaide.
*/
public void showAdelaide(View v) {
// Wait until map is ready
if (mMap == null) {
if (map == null) {
return;
}

// Center camera on Adelaide marker
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ADELAIDE, 10f));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(ADELAIDE, 10f));
}

/**
Expand All @@ -108,7 +108,7 @@ public void showAdelaide(View v) {
*/
public void showAustralia(View v) {
// Wait until map is ready
if (mMap == null) {
if (map == null) {
return;
}

Expand All @@ -122,15 +122,15 @@ public void showAustralia(View v) {
.include(BRISBANE);

// Move camera to show all markers and locations
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(), 20));
map.moveCamera(CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(), 20));
}

/**
* Called when the map is ready to add all markers and objects to the map.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
map = googleMap;
addMarkers();
addPolyObjects();
showAustralia(null);
Expand All @@ -142,12 +142,12 @@ public void onMapReady(GoogleMap googleMap) {
* Territory (Australia).
*/
private void addPolyObjects() {
mMap.addPolyline((new PolylineOptions())
map.addPolyline((new PolylineOptions())
.add(MELBOURNE, ADELAIDE, PERTH)
.color(Color.GREEN)
.width(5f));

mMap.addPolygon(new PolygonOptions()
map.addPolygon(new PolygonOptions()
.add(POLYGON)
.fillColor(Color.CYAN)
.strokeColor(Color.BLUE)
Expand All @@ -158,26 +158,26 @@ private void addPolyObjects() {
* Add Markers with default info windows to the map.
*/
private void addMarkers() {
mMap.addMarker(new MarkerOptions()
map.addMarker(new MarkerOptions()
.position(BRISBANE)
.title("Brisbane"));

mMap.addMarker(new MarkerOptions()
map.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));

mMap.addMarker(new MarkerOptions()
map.addMarker(new MarkerOptions()
.position(SYDNEY)
.title("Sydney")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));

mMap.addMarker(new MarkerOptions()
map.addMarker(new MarkerOptions()
.position(ADELAIDE)
.title("Adelaide")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));

mMap.addMarker(new MarkerOptions()
map.addMarker(new MarkerOptions()
.position(PERTH)
.title("Perth")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class DemoDetailsList {
CloseInfoWindowDemoActivity::class.java),
DemoDetails(R.string.layers_demo_label, R.string.layers_demo_description,
LayersDemoActivity::class.java),
DemoDetails(R.string.lite_demo_label, R.string.lite_demo_details,
LiteDemoActivity::class.java),
DemoDetails(R.string.lite_list_demo_label, R.string.lite_list_demo_details,
LiteListDemoActivity::class.java),
DemoDetails(R.string.markers_demo_label, R.string.markers_demo_description,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
// 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.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.example.kotlindemos.OnMapAndViewReadyListener.OnGlobalLayoutAndMapReadyListener
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.*

/**
* This demo shows some features supported in lite mode.
* In particular it demonstrates the use of [com.google.android.gms.maps.model.Marker]s to
* launch the Google Maps Mobile application, [com.google.android.gms.maps.CameraUpdate]s
* and [com.google.android.gms.maps.model.Polygon]s.
*/
class LiteDemoActivity : AppCompatActivity(), OnGlobalLayoutAndMapReadyListener {
private lateinit var map: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// Set the layout
setContentView(R.layout.lite_demo)

// Get the map and register for the ready callback
val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
OnMapAndViewReadyListener(mapFragment, this)
}

/**
* Move the camera to center on Darwin.
*/
fun showDarwin(v: View?) {
if (!::map.isInitialized) return

// Center camera on Adelaide marker
map.moveCamera(CameraUpdateFactory.newLatLngZoom(DARWIN, 10f))
}

/**
* Move the camera to center on Adelaide.
*/
fun showAdelaide(v: View?) {
if (!::map.isInitialized) return

// Center camera on Adelaide marker
map.moveCamera(CameraUpdateFactory.newLatLngZoom(ADELAIDE, 10f))
}

/**
* Move the camera to show all of Australia.
* Construct a [com.google.android.gms.maps.model.LatLngBounds] from markers positions,
* then move the camera.
*/
fun showAustralia(v: View?) {
if (!::map.isInitialized) return

// Create bounds that include all locations of the map
val boundsBuilder = LatLngBounds.builder()
.include(PERTH)
.include(ADELAIDE)
.include(MELBOURNE)
.include(SYDNEY)
.include(DARWIN)
.include(BRISBANE)

// Move camera to show all markers and locations
map.moveCamera(CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(), 20))
}

/**
* Called when the map is ready to add all markers and objects to the map.
*/
override fun onMapReady(googleMap: GoogleMap?) {
// return early if the map was not initialised properly
map = googleMap ?: return
addMarkers()
addPolyObjects()
showAustralia(null)
}

/**
* Add a Polyline and a Polygon to the map.
* The Polyline connects Melbourne, Adelaide and Perth. The Polygon is located in the Northern
* Territory (Australia).
*/
private fun addPolyObjects() {
map.addPolyline(
PolylineOptions()
.add(
MELBOURNE,
ADELAIDE,
PERTH
)
.color(Color.GREEN)
.width(5f)
)
map.addPolygon(
PolygonOptions()
.add(*POLYGON)
.fillColor(Color.CYAN)
.strokeColor(Color.BLUE)
.strokeWidth(5f)
)
}

/**
* Add Markers with default info windows to the map.
*/
private fun addMarkers() {
map.addMarker(
MarkerOptions()
.position(BRISBANE)
.title("Brisbane")
)
map.addMarker(
MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
)
map.addMarker(
MarkerOptions()
.position(SYDNEY)
.title("Sydney")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))
)
map.addMarker(
MarkerOptions()
.position(ADELAIDE)
.title("Adelaide")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
)
map.addMarker(
MarkerOptions()
.position(PERTH)
.title("Perth")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))
)
}

companion object {
private val BRISBANE = LatLng(-27.47093, 153.0235)
private val MELBOURNE = LatLng(-37.81319, 144.96298)
private val SYDNEY = LatLng(-33.87365, 151.20689)
private val ADELAIDE = LatLng(-34.92873, 138.59995)
private val PERTH = LatLng(-31.952854, 115.857342)
private val DARWIN = LatLng(-12.459501, 130.839915)

/**
* A Polygon with five points in the Norther Territory, Australia.
*/
private val POLYGON = arrayOf(
LatLng(-18.000328, 130.473633), LatLng(-16.173880, 135.087891),
LatLng(-19.663970, 137.724609), LatLng(-23.202307, 135.395508),
LatLng(-19.705347, 129.550781)
)
}
}
77 changes: 77 additions & 0 deletions ApiDemos/kotlin/app/src/gms/res/layout/lite_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?><!--
Copyright (C) 2014 The Android Open Source Project
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.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/lite_demo_introtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lite_demo_intro" />


<!-- Change the camera of the map to show no markers -->
<Button
android:id="@+id/go_to_darwin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="showDarwin"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/lite_demo_introtext"
android:text="@string/lite_go_to_darwin" />

<!-- Change the camera of the map to show one marker -->
<Button
android:id="@+id/go_to_adelaide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="showAdelaide"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/go_to_darwin"
android:layout_toEndOf="@+id/go_to_australia"
android:layout_toRightOf="@+id/go_to_australia"
android:text="@string/lite_go_to_adelaide" />

<!-- Change the camera of the map to show multiple markers -->
<Button
android:id="@+id/go_to_australia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="showAustralia"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/go_to_adelaide"
android:layout_toEndOf="@+id/go_to_darwin"
android:layout_toRightOf="@+id/go_to_darwin"
android:text="@string/lite_go_to_australia" />


<!-- MapFragment with lite mode enabled -->
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/go_to_australia"
map:liteMode="true" />

</RelativeLayout>

1 change: 1 addition & 0 deletions ApiDemos/kotlin/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
<activity android:name=".StreetViewPanoramaOptionsDemoActivity" />
<activity android:name=".StreetViewPanoramaEventsDemoActivity" />
<activity android:name=".StreetViewPanoramaViewDemoActivity" />
<activity android:name=".LiteDemoActivity" />
</application>

</manifest>
8 changes: 8 additions & 0 deletions ApiDemos/kotlin/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@
<string name="terrain">Terrain</string>
<string name="traffic">Traffic</string>

<!-- Lite Demo -->
<string name="lite_demo_label">Lite Mode</string>
<string name="lite_demo_details">Demonstrates some features on a map in lite mode.</string>
<string name="lite_demo_intro">Click the map with no, one or multiple markers displayed to open the Google Maps Mobile app.</string>
<string name="lite_go_to_darwin">Go to Darwin (No Markers)</string>
<string name="lite_go_to_adelaide">Go to Adelaide (One Marker)</string>
<string name="lite_go_to_australia">Go to Australia (Five Markers)</string>

<!-- Lite List Demo -->
<string name="lite_list_demo_label">Lite List Demo</string>
<string name="lite_list_demo_details">Show a list of Lite Map of different locations using RecyclerView with LinearLayoutManager and GridLayoutManager</string>
Expand Down

0 comments on commit 0494813

Please sign in to comment.