Векторные карты

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Maps JavaScript API предлагает две разные реализации карты: растровую и векторную. Растровая карта загружается по умолчанию и загружает карту в виде сетки фрагментов растровых изображений на основе пикселей, которые генерируются серверной частью платформы Google Maps, а затем передаются в ваше веб-приложение. Векторная карта состоит из векторных плиток, которые рисуются во время загрузки на стороне клиента с помощью WebGL — веб-технологии, позволяющей браузеру получать доступ к графическому процессору на устройстве пользователя для рендеринга 2D- и 3D-графики.

Векторная карта — это та же карта Google, с которой знакомы ваши пользователи, и она предлагает ряд преимуществ по сравнению с растровой мозаичной картой по умолчанию, в первую очередь резкость векторных изображений и добавление 3D-зданий при близком масштабе. Векторная карта также поддерживает некоторые новые функции, такие как возможность добавления 3D-контента с помощью WebGL Overlay View, программное управление наклоном и направлением, улучшенное управление камерой и дробное масштабирование для более плавного масштабирования.

Начните работу с векторными картами

Управление камерой

Используйте функцию map.moveCamera() для одновременного обновления любой комбинации свойств камеры. map.moveCamera() принимает единственный параметр, содержащий все свойства камеры для обновления. В следующем примере показан вызов map.moveCamera() для одновременной установки center , zoom , heading и tilt :

map.moveCamera({
  center: new google.maps.LatLng(37.7893719, -122.3942),
  zoom: 16,
  heading: 320,
  tilt: 47.5
});

Вы можете анимировать свойства камеры, вызвав map.moveCamera() с циклом анимации, как показано здесь:

const degreesPerSecond = 3;

function animateCamera(time) {
  // Update the heading, leave everything else as-is.
  map.moveCamera({
    heading: (time / 1000) * degreesPerSecond
  });

  requestAnimationFrame(animateCamera);
}

// Start the animation.
requestAnimationFrame(animateCamera);

Дробный зум

Векторные карты поддерживают дробное масштабирование, что позволяет использовать дробные значения вместо целых. Хотя и растровые, и векторные карты поддерживают дробное масштабирование, дробное масштабирование включено по умолчанию для векторных карт и выключено по умолчанию для растровых карт. Используйте параметр карты isFractionalZoomEnabled , чтобы включать и выключать дробное масштабирование.

В следующем примере показано включение дробного масштабирования при инициализации карты:

map = new google.maps.Map(document.getElementById('map'), {
  center: {lat: -34.397, lng: 150.644},
  zoom: 8,
  isFractionalZoomEnabled: true
});

Вы также можете включать и выключать дробное масштабирование, установив параметр карты isFractionalZoomEnabled , как показано здесь:

// Using map.set
map.set('isFractionalZoomEnabled', true);

// Using map.setOptions
map.setOptions({isFractionalZoomEnabled: true});

Вы можете настроить прослушиватель для определения того, включено ли дробное масштабирование; это наиболее полезно, если вы явно не установили для isFractionalZoomEnabled значение true или false . В следующем примере кода проверяется, включено ли дробное масштабирование:

map.addListener('isfractionalzoomenabled_changed', () => {
  const isFractionalZoomEnabled = map.get('isFractionalZoomEnabled');
  if (isFractionalZoomEnabled === false) {
    console.log('not using fractional zoom');
  } else if (isFractionalZoomEnabled === true) {
    console.log('using fractional zoom');
  } else {
    console.log('map not done initializing yet');
  }
});