В этом примере определяется местоположение на карте, где установлен расширенный маркер. Также здесь продемонстрированы некоторые функции расширенных маркеров.
Подробнее читайте в документации.
Начало работы
Прежде чем воспользоваться образцом кода, настройте среду разработки. Подробнее об образцах кода Maps SDK для Android…
Ознакомьтесь с кодом
class AdvancedMarkersDemoActivity : AppCompatActivity(), OnMapReadyCallback {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.advanced_markers_demo)
val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
mapFragment?.getMapAsync(this)
}
override fun onMapReady(map: GoogleMap) {
with(map) {
moveCamera(CameraUpdateFactory.newLatLngZoom(SINGAPORE, ZOOM_LEVEL))
}
val capabilities: MapCapabilities = map.mapCapabilities
Log.d(TAG, "are advanced marker enabled?" + capabilities.isAdvancedMarkersAvailable)
// This sample sets a view as the iconView for the Advanced Marker
val textView = TextView(this)
textView.text = "Hello!"
val advancedMarkerView: Marker? = map.addMarker(
AdvancedMarkerOptions().position(SINGAPORE).iconView(textView).zIndex(1f)
)
// This uses PinConfig.Builder to create an instance of PinConfig.
val pinConfigBuilder: PinConfig.Builder = PinConfig.builder()
pinConfigBuilder.setBackgroundColor(Color.MAGENTA)
val pinConfig: PinConfig = pinConfigBuilder.build()
// Use the PinConfig instance to set the icon for AdvancedMarkerOptions.
val advancedMarkerOptions: AdvancedMarkerOptions =
AdvancedMarkerOptions().icon(BitmapDescriptorFactory.fromPinConfig(pinConfig))
.position(KUALA_LUMPUR)
// Pass the AdvancedMarkerOptions instance to addMarker().
val marker: Marker? = map.addMarker(advancedMarkerOptions)
// This sample changes the border color of the advanced marker
val pinConfigBuilder2: PinConfig.Builder = PinConfig.builder()
pinConfigBuilder2.setBorderColor(Color.BLUE)
val pinConfig2: PinConfig = pinConfigBuilder2.build()
val advancedMarkerOptions2: AdvancedMarkerOptions = AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig2))
.position(JAKARTA)
val marker2: Marker? = map.addMarker(advancedMarkerOptions2)
// Set the glyph text.
val pinConfigBuilder3: PinConfig.Builder = PinConfig.builder()
val glyphText = PinConfig.Glyph("A")
// Alternatively, you can set the text color:
// Glyph glyphText = new Glyph("A", Color.GREEN);
pinConfigBuilder3.setGlyph(glyphText)
val pinConfig3: PinConfig = pinConfigBuilder3.build()
val advancedMarkerOptions3: AdvancedMarkerOptions = AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig3))
.position(BANGKOK)
val marker3: Marker? = map.addMarker(advancedMarkerOptions3)
// Create a transparent glyph.
val pinConfigBuilder4: PinConfig.Builder = PinConfig.builder()
pinConfigBuilder4.setBackgroundColor(Color.MAGENTA)
pinConfigBuilder4.setGlyph(PinConfig.Glyph(Color.TRANSPARENT))
val pinConfig4: PinConfig = pinConfigBuilder4.build()
val advancedMarkerOptions4: AdvancedMarkerOptions = AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig4))
.position(MANILA)
val marker4: Marker? = map.addMarker(advancedMarkerOptions4)
// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
val collisionBehavior: Int =
AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions5: AdvancedMarkerOptions = AdvancedMarkerOptions()
.position(HO_CHI_MINH_CITY)
.collisionBehavior(collisionBehavior)
val marker5: Marker? = map.addMarker(advancedMarkerOptions5)
}
}
public class AdvancedMarkersDemoActivity extends AppCompatActivity implements OnMapReadyCallback {
private static final LatLng SINGAPORE = new LatLng(1.3521, 103.8198);
private static final LatLng KUALA_LUMPUR = new LatLng(3.1390, 101.6869);
private static final LatLng JAKARTA = new LatLng(-6.2088, 106.8456);
private static final LatLng BANGKOK = new LatLng(13.7563, 100.5018);
private static final LatLng MANILA = new LatLng(14.5995, 120.9842);
private static final LatLng HO_CHI_MINH_CITY = new LatLng(10.7769, 106.7009);
private static final float ZOOM_LEVEL = 3.5f;
private static final String TAG = AdvancedMarkersDemoActivity.class.getName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.advanced_markers_demo);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
if (mapFragment != null) {
mapFragment.getMapAsync(this);
}
}
@Override
public void onMapReady(GoogleMap map) {
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SINGAPORE, ZOOM_LEVEL));
MapCapabilities capabilities = map.getMapCapabilities();
Log.d(TAG, "Are advanced markers enabled? " + capabilities.isAdvancedMarkersAvailable());
// This sample sets a view as the iconView for the Advanced Marker
TextView textView = new TextView(this);
textView.setText("Hello!");
Marker advancedMarkerView = map.addMarker(new AdvancedMarkerOptions()
.position(SINGAPORE)
.iconView(textView)
.zIndex(1f));
// This uses PinConfig.Builder to create an instance of PinConfig.
PinConfig.Builder pinConfigBuilder = PinConfig.builder();
pinConfigBuilder.setBackgroundColor(Color.MAGENTA);
PinConfig pinConfig = pinConfigBuilder.build();
// Use the PinConfig instance to set the icon for AdvancedMarkerOptions.
AdvancedMarkerOptions advancedMarkerOptions = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig))
.position(KUALA_LUMPUR);
// Pass the AdvancedMarkerOptions instance to addMarker().
Marker marker = map.addMarker(advancedMarkerOptions);
// This sample changes the border color of the advanced marker
PinConfig.Builder pinConfigBuilder2 = PinConfig.builder();
pinConfigBuilder2.setBorderColor(Color.BLUE);
PinConfig pinConfig2 = pinConfigBuilder2.build();
AdvancedMarkerOptions advancedMarkerOptions2 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig2))
.position(JAKARTA);
Marker marker2 = map.addMarker(advancedMarkerOptions2);
// Set the glyph text.
PinConfig.Builder pinConfigBuilder3 = PinConfig.builder();
PinConfig.Glyph glyphText = new PinConfig.Glyph("A");
// Alternatively, you can set the text color:
// Glyph glyphText = new Glyph("A", Color.GREEN);
pinConfigBuilder3.setGlyph(glyphText);
PinConfig pinConfig3 = pinConfigBuilder3.build();
AdvancedMarkerOptions advancedMarkerOptions3 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig3))
.position(BANGKOK);
Marker marker3 = map.addMarker(advancedMarkerOptions3);
// Create a transparent glyph.
PinConfig.Builder pinConfigBuilder4 = PinConfig.builder();
pinConfigBuilder4.setBackgroundColor(Color.MAGENTA);
pinConfigBuilder4.setGlyph(new PinConfig.Glyph(Color.TRANSPARENT));
PinConfig pinConfig4 = pinConfigBuilder4.build();
AdvancedMarkerOptions advancedMarkerOptions4 = new AdvancedMarkerOptions()
.icon(BitmapDescriptorFactory.fromPinConfig(pinConfig4))
.position(MANILA);
Marker marker4 = map.addMarker(advancedMarkerOptions4);
// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL;
AdvancedMarkerOptions advancedMarkerOptions5 = new AdvancedMarkerOptions()
.position(HO_CHI_MINH_CITY)
.collisionBehavior(collisionBehavior);
Marker marker5 = map.addMarker(advancedMarkerOptions5);
}
}
Клонирование и запуск образцов приложений
Для локального запуска образца вам потребуется Git. Используйте команду ниже, чтобы клонировать образец приложения в хранилище.
git clone git@github.com:googlemaps-samples/android-samples.git
Импортируйте образец проекта в Android Studio:
- В Android Studio откройте меню Файл > Создать > Импортировать проект.
Перейдите в директорию, куда вы добавили хранилище, и выберите каталог проекта для Kotlin или Java.
- Kotlin:
PATH-REPO/android-samples/ApiDemos/kotlin
- Java:
PATH-REPO/android-samples/ApiDemos/java
- Kotlin:
- Нажмите кнопку Открыть. Android Studio создаст проект с помощью Gradle.
- Создайте пустой файл
secrets.properties
в том же каталоге, где хранится файл проектаlocal.properties
. Подробнее о том, как добавить в проект ключ API… Добавьте в
secrets.properties
следующую строку, заменив YOUR_API_KEY на значение вашего ключа API:MAPS_API_KEY=
YOUR_API_KEY - Запустите приложение.