2017-02-21 21 views
6

Я ищу способ, чтобы использовать свойство zoomControlOptiions доступные в обычных картах Google, например, так:Перемещение управления Карта на Angular 2 Google Maps

zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.SMALL, 
    position: google.maps.ControlPosition.LEFT_CENTER 
}, 

Stackoverflow example showing code above
Same thing in the official google maps docs

К сожалению, я не Не видите этот параметр в Угловом 2 Картах Google API Docs. Есть ли способ сделать это? Есть ли способ использовать полную функциональность, несмотря на использование обертки Angular 2?

enter image description here

Обратите внимание, что только работает этот код работает отлично:

map.setOptions({ 
     zoom: 1, 
     center: position, 
     zoomControl: true 
    }); 

    console.log(map.getZoom()); 

Я могу получить собственный объект Google Maps и запускать методы/свойства, установленные на нем. Проблема возникает, когда я пытаюсь использовать zoomControlOptions, который идет непосредственно из docs


Edit: Так, это на самом деле работает, проблема теперь денешься машинописи компилятор жалуется.

Редактировать 2: Я исправил проблему, но если кто-то хочет получить награду, не стесняйтесь объяснять, почему zoomControlOptions не доступны изначально.

ответ

1

Вы можете получить ссылку на собственный объект карты, а затем добавить zoomControlOptions. Полный пример получения ссылки на карту находится на https://github.com/philipbrack/example-angular2-google-maps-getNativeMap:

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

import {GoogleMapsAPIWrapper} from 'angular2-google-maps/core'; 

declare var google:any; 

@Component({ 
    selector: 'app-map-content', 
    template: '' 
}) 
export class MapContentComponent implements OnInit { 

    constructor(public mapApiWrapper:GoogleMapsAPIWrapper) { 

    } 

    ngOnInit() { 

    this.mapApiWrapper.getNativeMap() 
     .then((map)=> { 

     // I have been manually updating core/services/google-maps-types.d.ts to include things they didn't include. 
     console.log(map.getZoom()); 

     let position = new google.maps.LatLng(45.521, -122.677); 

     var cityCircle = new google.maps.Circle({ 
      strokeColor: '#FF0000', 
      strokeOpacity: 0.8, 
      strokeWeight: 2, 
      fillColor: '#FF0000', 
      fillOpacity: 0.35, 
      map: map, 
      center: position, 
      radius: 10000 
     }); 


     }); 

    } 

} 
+0

Спасибо, пытаясь сейчас. – VSO

1

Таким образом, по-видимому, все, что мне нужно сделать, это убедиться, что компилятор не жалуется на создание интерфейса:

interface NativeGoogMapProps { 
    zoomControlOptions?: any; 
    streetViewControlOptions?: any; 
} 

и затем использовать его при настройке параметров карты:

let zoomControlOptions: any = { 
     style: google.maps.ControlPosition.small, 
     position: google.maps.ControlPosition.RIGHT_CENTER 
    }; 

    let streetViewControlOptions: any = { 
     position: google.maps.ControlPosition.RIGHT_CENTER 
    }; 

    map.setOptions(<NativeGoogMapProps>{ 
     zoomControlOptions: zoomControlOptions, 
     streetViewControlOptions: streetViewControlOptions 
    }); 

Я на самом деле не знаю, почему некоторый реквизит на объекте карты и некоторые из них не хотя, но это работает без ошибок.