2014-11-07 3 views
2

Я пытаюсь изменить sample-google-maps для работы внутри полимерного элемента. При запуске следующего кода я ничего не вижу, кроме названия, и ошибок нет. Пожалуйста, сообщите, как я могу выполнить эту работу.Как использовать javascript из Dart внутри полимерного элемента

В более длительном режиме я хочу определить дополнительные компоненты, используя api и google-диаграмму google-диаграммы. Может ли кто-нибудь указать мне на выработанный пример.

index.html

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>DEMO</title> 
    <script type="text/javascript" src="packages/web_components/platform.js"></script> 
    <link rel="import" href="lib_elements/googlemapcanvas/googlemapcanvas.html"> 

    <script type="text/javascript" 
    src="https://maps.googleapis.com/maps/api/js?sensor=false"> 
    </script> 
    </head> 

    <body> 
    <h1> Trial for Charted Library</h1> 

    <google-map-canvas></google-map-canvas> 

    <!-- bootstrap polymer --> 
    <script type="application/dart">export 'package:polymer/init.dart';</script> 
    <script src="packages/browser/dart.js"></script> 
    <script src="packages/browser/interop.js"></script> 
    </body> 
</html> 

googlemapcanvas.html

<!-- import polymer-element's definition --> 
<link rel="import" href="packages/polymer/polymer.html"> 

<polymer-element name="google-map-canvas" attributes="title"> 

    <template> 
    <style> 
     #google-map-canvas { 
      height:100% 
     } 
    </style> 
    <h1>{{title}}</h1> 
    <div id="google-map-canvas"></div> 
    </template> 
    <script type="application/dart" src="googlemapcanvas.dart"></script> 
</polymer-element> 

googlemapcanvas.dart

import 'package:polymer/polymer.dart'; 
import 'dart:js' as js; 
import 'dart:html'; 
/** 
* A Polymer click counter element. 
*/ 
@CustomTag('google-map-canvas') 
class GoogleMapCanvas extends PolymerElement{ 

    @published String title = "Google Map Canvas"; 
    DivElement googlemapcanvas; 


    GoogleMapCanvas.created(): super.created(){ 

    } 

    @override 
    void attached(){ 
    googlemapcanvas = $['google-map-canvas']; 
    draw(); 
    } 

    draw(){ 
    final google_maps = js.context['google']['maps']; 
    var center = new js.JsObject(google_maps['LatLng'], [-34.397, 150.644]); 
    var mapTypeId = google_maps['MapTypeId']['ROADMAP']; 

    var mapOptions = new js.JsObject.jsify({ 
     "center": center, 
     "zoom": 8, 
     "mapTypeId": mapTypeId 
    }); 

    new js.JsObject(google_maps['Map'],[googlemapcanvas, mapOptions]); 

    } 
} 

ответ

1

Это проблема CSS, может быть специфическими для полимера, но проблема CSS все тоже самое. Есть несколько вещей, которые вы можете сделать. Самый простой - добавить fullbleed в качестве атрибута в < тело >.

<body unresolved fullbleed> 

</body> 

И ваша карта будет отображаться, заняв остальную часть доступного пространства. Или вы можете указать высоту вашего Google-карта-холст элемента имеют высоту в пикселях, как так

<polymer-element ...> 
    <template> 
     <style> 
      :host { 
       height: 500px; 
      } 
      ... 
     </style> 
     ... 
    </template> 
</polymer-element> 

И карта будет заполнить пространство, оставленное после заголовка вы положили только перед ним. Но это не будет превышать 500 пикселей, которые вы дали этому элементу. Есть и другие трюки, которые вы могли бы сделать. Я хотел бы посмотреть на этом сайте больше способов макета полимерных элементов

https://www.polymer-project.org/docs/polymer/layout-attrs.html

И руководство по стилю полимерных элементам

https://www.polymer-project.org/docs/polymer/styling.html

Надежда, которая отвечает на ваши вопросы.

Кстати, вы знаете, что это порт API карт Google для Дарта?

https://pub.dartlang.org/packages/google_maps