javascript - Skapa polygon i Angular 2 med hjälp av agm-biblioteket
Jag försöker skapa en polygon med Angular 2 AGM-biblioteket. Mallen är bifogad nedan:
<div id="google_map" [@cardtable2]>
<sebm-google-map #maps [latitude]="latitude" [longitude]="longitude" [scrollwheel]="false" [zoom]="zoom">
<sebm-google-map-marker
*ngFor="let m of markers; let i = index"
(markerClick)="clickedMarker(m.label, i)"
[latitude]="m.lat"
[longitude]="m.lng"
[label]="m.label"
[markerDraggable]="true"
(dragEnd)="markerDragEnd(m, $event)">
<sebm-google-map-info-window>
<strong>{{m.label}}</strong>
</sebm-google-map-info-window>
</sebm-google-map-marker>
</sebm-google-map>
</div>
Och i kontrollern bifogar jag polygonen på följande sätt:
var city_bounds = [
{
"longitude" : 77.088103,
"latitude" : 11.066228
},
{
"longitude" : 77.027745,
"latitude" : 11.113179
},
{
"longitude" : 76.937558,
"latitude" : 11.100018
},
{
"longitude" : 76.867772,
"latitude" : 11.082932
},
{
"longitude" : 76.867772,
"latitude" : 11.038643
},
{
"longitude" : 76.899553,
"latitude" : 10.968071
},
{
"longitude" : 76.925336,
"latitude" : 10.924184
},
{
"longitude" : 76.984468,
"latitude" : 10.92891
},
{
"longitude" : 77.032123,
"latitude" : 10.971053
},
{
"longitude" : 77.066364,
"latitude" : 11.000079
},
{
"longitude" : 77.065678,
"latitude" : 11.030235
}
]
this.mapsAPILoader.load().then(() => {
this.path = city_bounds.map(point => {
return new google.maps.LatLng(point.latitude, point.longitude);
});
let city_bounds_polygon = new google.maps.Polygon({
// map: this.mapsElementRef._elem.nativeElement,
paths: this.path,
editable: false,
draggable: false
})
city_bounds_polygon.setMap(this.mapsElementRef);
});
Koden ovan är bara ett litet utdrag av en stor komponentfil, där this.mapsElementRef är en referens till sebm-google-maps som jag fick med hjälp av @ViewChild("maps")-dekoreraren. När jag startar node-servern får jag felet som nedan
app/map.component.ts(233,34): error TS2345: Argument of type 'ElementRef' is not assignable to parameter of type 'Map'.
Property 'fitBounds' is missing in type 'ElementRef'.
Jag vet att det är något fel med kartreferensen, i vanlig javascript är referensen till kartorna tillgänglig eftersom vi skapar kartor med new google.maps.Maps som ses här. Men här skapas kartan med Angular-direktivet sebm-google-map. Så jag tog referensen till den med ViewChild och använde den med setMap, och fick felet ovan.
Jag antar att jag måste använda AgmPolygon från Agm-biblioteket som här, men jag har ingen aning om hur man använder det, eftersom jag inte hittar något exempel i dokumentationen. Kan någon ge en korrekt vägledning om hur man använder Agm-biblioteket för att skapa en polygon?
Versionen av agm är 0.16.0, det är faktiskt biblioteket med det gamla paketnamnet angular2-google-maps/core
Svar #1
I lösningsmedel med agm +2:
mapClicked(data){
this.path.push({ lat: data.coords.lat, lng: data.coords.lng });
let newArray = Array<any>();
this.path.forEach((item) => {
newArray.push(item);
});
this.path = newArray;
}
// slut mapClicked
