ch1: marker 和 change color
package branch.feature.googlemap_api_learn.ch1;import android.os.Bundle;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.example.mynewsapp.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {private GoogleMap myMap;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_ch1);SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.gMap);mapFragment.getMapAsync(this);}@Overridepublic void onMapReady(@NonNull GoogleMap googleMap) {myMap = googleMap;LatLng sydney = new LatLng(-34, 151);// it worksmyMap.addMarker(new MarkerOptions().position(sydney).title("Sydney"));myMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));// change colorMarkerOptions options = new MarkerOptions().position(sydney).title("悉尼");options.icon(BitmapDescriptorFactory.defaultMarker(// here change color styleBitmapDescriptorFactory.HUE_MAGENTA));myMap.addMarker(options);}
}
ch2: 我的位置
package branch.feature.googlemap_api_learn.ch2;import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;import com.example.mynewsapp.R;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;// 我的位置
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {private final int FINE_PERMISSION_CODE = 1;private GoogleMap myMap;Location currentLocation;FusedLocationProviderClient fusedLocationProviderClient;@Overridepublic void onMapReady(@NonNull GoogleMap googleMap) {myMap = googleMap;LatLng me = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());myMap.addMarker(new MarkerOptions().position(me).title("我的位置"));myMap.moveCamera(CameraUpdateFactory.newLatLng(me));}@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_ch2);fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);getLastLocation();}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == FINE_PERMISSION_CODE) {if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {getLastLocation();} else {Toast.makeText(this, "位置未授权", Toast.LENGTH_SHORT).show();}}}private void getLastLocation() {// handle permissionif (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, FINE_PERMISSION_CODE);return;}Task<Location> task = fusedLocationProviderClient.getLastLocation();task.addOnSuccessListener(new OnSuccessListener<Location>() {@Overridepublic void onSuccess(Location location) {if (location != null) {// set my locationcurrentLocation = location;SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.gMap);mapFragment.getMapAsync(MainActivity.this);}}});}
}
ch3: 查找位置和移动相机
package branch.feature.googlemap_api_learn.ch3;import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.widget.SearchView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.example.mynewsapp.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;import java.util.List;// 查找位置
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {private GoogleMap myMap;private SearchView mySearchView;@Overridepublic void onMapReady(@NonNull GoogleMap googleMap) {myMap = googleMap;}@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_ch3);mySearchView = findViewById(R.id.mapSearch);SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.gMap);mySearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Overridepublic boolean onQueryTextSubmit(String query) {String location = mySearchView.getQuery().toString();List<Address> addressList = null;if (location != null) {Geocoder geocoder = new Geocoder(MainActivity.this);try {addressList = geocoder.getFromLocationName(location, 1);} catch (Exception e) {e.printStackTrace();}Address address = addressList.get(0);LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());myMap.addMarker(new MarkerOptions().position(latLng).title(location));myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 100));}return false;}@Overridepublic boolean onQueryTextChange(String newText) {return false;}});mapFragment.getMapAsync(MainActivity.this);}
}
ch4: 切换地图类型
package branch.feature.googlemap_api_learn.ch4;import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.example.mynewsapp.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;// 创建不同的地图类型
// None, Normal, Satellite Map, Hybrid Map
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {private GoogleMap myMap;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_ch4);SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.gMap);mapFragment.getMapAsync(this);}@Overridepublic void onMapReady(@NonNull GoogleMap googleMap) {myMap = googleMap;LatLng one = new LatLng(11, 11);myMap.moveCamera(CameraUpdateFactory.newLatLng(one));MarkerOptions options = new MarkerOptions().position(one).title("one");options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN));myMap.addMarker(options);// 启用一下myMap.getUiSettings().setZoomControlsEnabled(true);myMap.getUiSettings().setCompassEnabled(true);myMap.getUiSettings().setZoomGesturesEnabled(true);myMap.getUiSettings().setScrollGesturesEnabled(true);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_ch4, menu);return true;}@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {int id = item.getItemId();if (id == R.id.mapNone) {myMap.setMapType(GoogleMap.MAP_TYPE_NONE);} else if (id == R.id.mapNormal) {myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);} else if (id == R.id.mapSatellite) {myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);} else if (id == R.id.mapHybrid) {myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);} else if (id == R.id.mapTerrain) {myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);}return super.onOptionsItemSelected(item);}
}
ch5: 跳转到谷歌地图app
package branch.feature.googlemap_api_learn.ch5;import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.example.mynewsapp.R;// 跳转谷歌地图,
public class MainActivity extends AppCompatActivity {private EditText edFromLocation;private EditText edToLocation;private Button btCheck;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_ch5);edFromLocation = findViewById(R.id.edFrom);edToLocation = findViewById(R.id.edTo);btCheck = findViewById(R.id.btCheck);btCheck.setOnClickListener(view -> {String userLocation = edFromLocation.getText().toString();String userDestination = edToLocation.getText().toString();if (userDestination.equals("") || userDestination.equals("")) {Toast.makeText(this, "fill the text", Toast.LENGTH_SHORT).show();} else {getDirection(userLocation, userDestination);}});}private void getDirection(String userLocation, String userDestination) {try {// 跳转到谷歌地图Uri uri = Uri.parse("https://www.google.com/maps/dir/" + userLocation + "/"+ userDestination);Intent intent = new Intent(Intent.ACTION_VIEW, uri);intent.setPackage("com.google.android.apps.maps");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);} catch (ActivityNotFoundException e) {e.printStackTrace();}}
}
ref link:
- https://gitee.com/EEPPEE_admin/splash_signin_bottomnavi_drawer/blob/master/app/src/main/java/branch/feature/googlemap_api_learn/