Прежде всего, Google Maps API v3 не предоставляет никакого элемента управления по умолчанию для «показать мое местоположение», поэтому единственным вариантом будет реализация вашего собственного.Но вместо того, чтобы создавать его с нуля, вы можете использовать готовый элемент управления, например klokantech.GeolocationControl
Вот инструкция о том, как интегрировать его в приложение Angular 2+ с помощью AngularGoogle Maps :
1) загрузить библиотеку maptilerlayer
, поместив ее в index.html
:
<script src="https://cdn.klokantech.com/maptilerlayer/v1/index.js"></script>
или динамически, например, используя библиотеку scriptjs
:
get('https://cdn.klokantech.com/maptilerlayer/v1/index.js', () => {
});
2) инициализировать klokantech.GeolocationControl
в компоненте:
app.component.html:
<agm-map #map [streetViewControl]=false [latitude]="lat" [longitude]="lng" [zoom]="zoom" (mapReady)="mapLoad($event)">
</agm-map>
app.component.js
export class AppComponent {
lat = -25.91;
lng = 145.81;
zoom = 4;
protected mapLoad(map) {
this.renderGeolocationControl(map);
}
renderGeolocationControl(map) {
get('https://cdn.klokantech.com/maptilerlayer/v1/index.js', () => {
const geoloccontrol = new klokantech.GeolocationControl(map, 18);
console.log(geoloccontrol);
});
}
}
Демо
Исходный код
Обновление
В случае, если выпредпочитаете загружать https://cdn.klokantech.com/maptilerlayer/v1/index.js
динамически, ниже приведена инструкция, как выполнить его через scriptjs
пакет:
Установить пакет:
npm i scriptjs
и определения типа для scriptjs
:
npm install --save @types/scriptjs
Затем импортируйте $script.get()
метод:
import { get } from 'scriptjs';
и, наконец, загрузите библиотеку:
get('https://cdn.klokantech.com/maptilerlayer/v1/index.js', () => {
const geoloccontrol = new klokantech.GeolocationControl(map, 18);
});