2014-11-06 113 views
1

我正在嘗試寫一個聚合物元素負責繪製谷歌地圖表示法。Dart +聚合物+ google_maps

這是代碼:

@CustomTag('map-element') 
class MapElement extends PolymerElement { 
    ... 

    @override 
    void attached() { 
    super.attached(); 
    canvasMap = $['canvas_map']; 
    initMap(); 
    window.navigator.geolocation.watchPosition(enableHighAccuracy: true) 
      .listen(
       (Geoposition position) {addPosition(position);}, 
       onError: (error) => handleError(error)); 
    } 
    ... 

    void initMap(){ 
    gmap = new GMap(
     canvasMap, 
      new MapOptions() 
      ..zoom = 4 
      ..center = new LatLng(0, 0) 
      ..mapTypeId = MapTypeId.ROADMAP 
     ); 

    line = new Polyline(
     new PolylineOptions() 
      ..map = gmap 
      ..strokeColor='#0022ee' 
      ..geodesic=true 
      ..strokeOpacity=0.7 
      ..strokeWeight=2 
      ..visible=true); 
    } 

} 

這是拋出的異常,當我嘗試創建GMAP的一個實例:

Class 'GElement' has no instance method '[]'. 

NoSuchMethodError: method not found: '[]' 
Receiver: Instance of 'GElement' 
Arguments: ["maps"] 

我認爲這個問題是因爲聚合物使用DOM影子,你知道任何解決方法嗎?

這裏是整個項目:https://github.com/carlosvin/snowroute


現在它的工作,在這裏你可以嘗試一下:http://carlosvin.github.io/snowroute/

我只index.html中添加JavaScript代碼,而不是在聚合物元素聲明。

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>

我嘗試爲https://github.com/carlosvin/snowroute,對於這個問題的相關文件:網絡/ map_element.dart,網絡/ map_element.html和web/index.html的。

+0

我現在沒有時間整理,但我認爲Angular.dart也有類似的問題,答案也可能適用於您。 – 2014-11-06 19:15:38

+0

謝謝我要去找Angular.dart,然後我會發布我的研究結果。我正在爲Polymer.dart尋找類似的問題,但我找不到解決方法。 – carlosvin 2014-11-06 19:49:00

回答

1

簡單,你只是缺少JavaScript代碼

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

我也試圖做你在做什麼,忘了,包括這一點,得到了同樣的錯誤。我發現你可以在這裏包含它

<polymer-element name="map-element"> 
    <template> 
    <div id="canvas_map"></div> 
    </template> 
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
    <script type="application/dart" src="map_element.dart"></script> 
</polymer-element> 

或者你可以將它包含在主index.html文件中。

儘管這不實現CSS,但您必須適用於實際大小並查看地圖,這是另一個問題,我已經在這裏回答了一個問題How to use javascript from Dart inside a polymer element

+0

謝謝,現在它只在index.hmlt中使用javascript標記,而不是聚合元素。我要編輯這個問題。 – carlosvin 2015-01-29 19:12:03

+0

這是否表示我正確回答了您的問題? – 2015-01-29 19:38:16