2017-02-12 12 views
0

В этой функции код {draggable:'true'} не принимается и делает ошибки:В Ionic2 Маркер лифтов не приемлем функцию Draggable?

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

import * as Leaflet from 'leaflet'; 

@Component({ 
    selector: 'page-street', 
    templateUrl: 'street.html' 
}) 
export class StreetPage { 
private latLng: any; 
    private marker: any; 
    private map: any; 
    constructor(public navCtrl: NavController) { 

    } 
    ngOnInit(): void { 
    this.drawMap(); 
    } 
    drawMap(): void { 
    let map = Leaflet.map('map'); 
    Leaflet.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { 
     maxZoom: 15 
    }).addTo(map); 

    map.locate({ setView: true}); 
    function onLocationFound(e) {  
     var radius = e.accuracy/3;  
     Leaflet.marker(e.latlng, {draggable:'true'}).addTo(map); 
     Leaflet.circle(e.latlng, radius).addTo(map); 
    } 
    map.on('locationfound', onLocationFound); 
    //alert on location error 
    function onLocationError(e) { 
     alert(e.message); 
    } 
    map.on('locationerror', onLocationError); 
    } 
} 

любая идея, чтобы решить эту проблему?

Update:

ошибка для {draggable:'true'}:

Typescript Error Argument of type '{ draggable: string; }' is not assignable to parameter of type 'MarkerOptions'. Types of property 'draggable' are incompatible. Type 'string' is not assignable to type 'boolean

ошибка для {draggable: true}:

Typescript Error Argument of type '{ draggable: true; }' is not assignable to parameter of type 'MarkerOptions'. Property 'options' is missing in type '{ draggable: true

+0

Какая ошибка? – n00b

+0

@ n00b Я обновил сообщение с ошибками. – RSA

ответ

1

первое использование

{draggable:true} 

здесь, true является логическим, а не вашим «истинным», которое является строкой. TypeScript видит ваш код как объект со строковым свойством, которому нельзя присвоить переменную, которая является объектом с логическим свойством с именем «draggable»

Ожидаемый тип также требует свойства «options». вы должны быть в состоянии выяснить, что вы должны вставить в опции, взглянув на определение MarkerOptions.

Возможно, вы загрузили некоторые «Типики» (.d.ts) для «листовки», которые помещают некоторое определение для MarkerOptions, которое слишком ограничивает.

скажу, вы использовали это, чтобы получить эти типизации

npm install @types/leaflet

Option1: Найти заявление, сделанное для MarkerOptions и либо изменить его, чтобы соответствовать вашей цели или изменить параметры, чтобы соответствовать этому определению.

Option2: Найдите объявление для функции «маркеров» в файле декларации вы скачали и изменить тип второго параметра от «MarkerOption» до «любой»

в конечном итоге вашего index.d.ts должен выглядеть это

export interface MarkerOptions extends InteractiveLayerOptions { 
     icon?: Icon; 
     clickable?: boolean; 
     draggable?: boolean; 
     keyboard?: boolean; 
     title?: string; 
     alt?: string; 
     zIndexOffset?: number; 
     opacity?: number; 
     riseOnHover?: boolean; 
     riseOffset?: number; 

     options?: DivIconOptions; 
    } 

    export class Marker extends Layer { 
     constructor(latlng: LatLngExpression, options?: MarkerOptions); 
     getLatLng(): LatLng; 
     setLatLng(latlng: LatLngExpression): this; 
     setZIndexOffset(offset: number): this; 
     setIcon(icon: Icon): this; 
     setOpacity(opacity: number): this; 
     getElement(): HTMLElement; 

     // Properties 
     options: MarkerOptions; 
     dragging: Handler; 
    } 
+0

Уважаемый @ n00b, это руководство дает мне представление о содержании файла, и я могу найти, что мне нужно использовать 'Leaflet.marker (e.latlng, {'draggable': true}) .addTo (map);' now marker перетаскивается, но круг не перетаскивается с создателем (он не привязан к маркеру), другой вопрос заключается в том, как читать положение перетаскиваемого маркера. В qoogle был прослушиватель событий «draggend». – RSA

 Смежные вопросы

  • Нет связанных вопросов^_^