Как связать Angular и яндекс карты?

Для связи Angular и Яндекс карт вам потребуется использовать специальные библиотеки и инструменты. Существуют несколько подходов к интеграции Яндекс карт с Angular приложением, и я расскажу о двух из них.

Первый подход - использование специализированной библиотеки angular2-yandex-maps. Эта библиотека предоставляет компоненты и сервисы для работы с Яндекс картами в Angular приложениях. Для начала вам потребуется установить её с помощью npm:

npm install angular2-yandex-maps

После установки, вам необходимо импортировать необходимые модули в вашем Angular модуле:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { YandexMapsModule } from 'angular2-yandex-maps';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    YandexMapsModule.forRoot('YOUR_API_KEY'),
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

После этого вы сможете использовать компонент ya-map в шаблоне вашего компонента:

<ya-map [center]="[55.753994, 37.622093]" [zoom]="10" style="width: 600px; height: 400px;">
  <ya-marker [coordinates]="[55.753994, 37.622093]"></ya-marker>
</ya-map>

Второй подход - использование JavaScript API Яндекс карт. В этом случае вам придется добавить SDK Яндекс карт в ваш Angular проект. Для этого вам потребуется добавить следующую строку в секцию <head> вашего index.html файла:

<script src="https://api-maps.yandex.ru/2.1/?apikey=YOUR_API_KEY&lang=ru_RU" type="text/javascript"></script>

После этого вы сможете использовать JavaScript API Яндекс карт в вашем компоненте. Для этого вам потребуется создать идентификатор для контейнера карты в шаблоне вашего компонента:

<div id="map" style="width: 600px; height: 400px;"></div>

А затем добавить код JavaScript для инициализации и работы с картой в вашем компоненте:

import { Component, OnInit } from '@angular/core';

declare const ymaps: any;

@Component({
  selector: 'app-map',
  template: `
    <div id="map" style="width: 600px; height: 400px;"></div>
  `
})
export class MapComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    ymaps.ready().then(() => {
      const map = new ymaps.Map('map', {
        center: [55.753994, 37.622093],
        zoom: 10
      });

      const marker = new ymaps.Placemark([55.753994, 37.622093]);
      map.geoObjects.add(marker);
    });
  }
}

Оба подхода имеют свои сильные стороны и недостатки. Использование angular2-yandex-maps библиотеки обеспечивает более простую интеграцию и типизацию, а использование JavaScript API Яндекс карт позволяет вам полностью контролировать и настраивать карту с использованием нативного JavaScript кода. Вам следует выбрать подход, который лучше всего подходит для ваших потребностей и требований проекта.