2012-04-14 16 views
9

Jestem nowy w DART. Czy można korzystać z interfejsu API Map Google w JavaScript na DART? Jeśli nie jest to teraz możliwe bezpośrednio, czy istnieje inna alternatywna metoda?Google Maps i DART

+1

18 bajtów, odpowiedź na to pytanie się zmieniła. Czy mógłbyś również przesunąć zielony znacznik wyboru? Dzięki! –

Odpowiedz

7

Możesz teraz użyć google_maps package dostępnego pod pub. Ta biblioteka umożliwia korzystanie z interfejsu API Map Google Maps ze skryptów dart.

Wystarczy dodać zależność do pubspec.yaml

dependencies: 
    google_maps: ">=1.0.1 <2.0.0" 

Dołącz Maps API JavaScript używając <script> tag.

<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 

Następnie można użyć Google Maps ze skryptów dart. Oto prosty exemple:

import 'dart:html'; 
import 'package:google_maps/google_maps.dart'; 

void main() { 
    final mapOptions = new MapOptions() 
    ..zoom = 8 
    ..center = new LatLng(-34.397, 150.644) 
    ..mapTypeId = MapTypeId.ROADMAP 
    ; 
    final map = new GMap(query("#map_canvas"), mapOptions); 
} 
+0

Próbowałem, ale "import" daje mi komunikat o błędzie "Dyrektywa nieczynna". Jakieś wskazówki, dlaczego to robi? – Stan

+0

Działa to dobrze z r14458. –

+0

Dzięki, ale utknąłem w użyciu 13851 i myślę, że to jest problem. Znalazłem jednak odpowiednią składnię: '#import ('package: js/js.dart', prefiks: 'js');', może pomóc komuś. – Stan

2

Obecnie musisz użyć postMessage z Dart, jeśli chcesz komunikować się z JavaScript (to się ostatecznie zmieni). Więc teraz trzeba dodać trochę kodu JavaScript w swojej aplikacji, który pośredniczy w wiadomości do i od Google maps API JS i dart:

function googleMapsCallback(s) { 
    window.postMessage(JSON.stringify(s), '*'); 
} 

a następnie w kodzie Dart:

class GoogleMap { 
    GoogleMap() { 
    window.on.message.add(received, false); 
    } 

    received(MessageEvent e) { 
    var data = JSON.parse(e.data); 
    // do stuff with google maps data 
    } 
} 

Alternativly możesz użyć Google Maps REST API bezpośrednio z Dart przy użyciu XMLHttpREquest

+0

Dzięki. Myślałem tylko o początkowym korzystaniu z interfejsu REST API Map Google. – 18bytes