2016-04-26 25 views
0

私はIonic2でGoogleマップの実装をしています。地図と地理位置は正常に動作します。エラーは、カスタムコントロール/ボタンをマップに実装しようとした後にのみ発生しました。私は、このリンクをたどっ: https://developers.google.com/maps/documentation/javascript/examples/control-customイオン2:Googleマップカスタムコントロールが動作しない

これは私のJSコード(コンストラクタ):

constructor(navController, platform, app) { 
    this.navController = navController; 
    this.platform = platform; 
    this.app = app; 

    platform.ready().then(() => { 
    this.initializeMap(); 
    }); 
    } 

カスタムコントロール:

CenterControl(controlDiv, map){ 
    // Set CSS for the control border. 
    var controlUI = document.createElement('div'); 
    controlUI.style.backgroundColor = '#fff'; 
    controlUI.style.border = '2px solid #fff'; 
    controlUI.style.borderRadius = '3px'; 
    controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)'; 
    controlUI.style.cursor = 'pointer'; 
    controlUI.style.marginBottom = '22px'; 
    controlUI.style.textAlign = 'center'; 
    controlUI.title = 'Click to recenter the map'; 
    controlDiv.appendChild(controlUI); 

    // Set CSS for the control interior. 
    var controlText = document.createElement('div'); 
    controlText.style.color = 'rgb(25,25,25)'; 
    controlText.style.fontFamily = 'Roboto,Arial,sans-serif'; 
    controlText.style.fontSize = '16px'; 
    controlText.style.lineHeight = '38px'; 
    controlText.style.paddingLeft = '5px'; 
    controlText.style.paddingRight = '5px'; 
    controlText.innerHTML = 'Center Map'; 
    controlUI.appendChild(controlText); 

    // Setup the click event listeners: simply set the map to Chicago. 
    controlUI.addEventListener('click', function() { 
     map.setCenter(chicago); 
    }); 

    } 

地図の初期化:

initializeMap() { 

    let locationOptions = {timeout: 10000, enableHighAccuracy: true}; 
    navigator.geolocation.getCurrentPosition(

     (position) => { 

     let options = { 
      // /new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
      center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
      zoom: 16, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 
     this.map = new google.maps.Map(document.getElementById("map_canvas"), options); 

     var centerControlDiv = document.createElement('div'); 
     var centerControl = new CenterControl(centerControlDiv, options); 
     centerControlDiv.index = 1; 
    map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv); 

     }, 

     (error) => { 
     console.log(error); 
     }, locationOptions 
    ); 
    } 

私のインデックス。 html:

I "はCenterControl(){}")(機能CenterControl」として設定することができないよ

var centerControl = new CenterControl(centerControlDiv, options); 

:ライン87を指し enter image description here

:所与

<script src="http://maps.google.com/maps/api/js?key=<MY API KEY>"></script> 

エラーメッセージは、このました{} "その場合は構文エラーが発生します。

答えて

1

私はこのようなCenterControlを定義します

export class CenterControl { 
    constructor(controlDiv, map){ 
    (...) 
    } 
} 

代わりの

CenterControl(controlDiv, map) { 
    (...) 
} 

とインポートあなたがそれを使用したいときに... exportキーワードを忘れないでください。

編集

それはあなたのクラスのメソッドだ場合は、単にこのようにそれを呼び出す:それは同じJSにあります

this.CenterControl(centerControlDiv, options); 
centerControlDiv.index = 1; 
this.map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv); 
+0

、私はまだそれをインポートする必要がありますか?そしてどうやって? – Gene

+0

'CenterControl(controlDiv、map)'がどこに定義されているのかがわかりにくいです...クラスのメソッドですか? –

+0

new this.CenterControl()? – superui

関連する問題