2017-02-14 3 views
1

Я получил это от своего кода:ionic 2 googlemaps custom controls

Поставляемые параметры не соответствуют какой-либо сигнатуре вызова.

var centerControl = new HomePage(); 

Свойство 'index' не существует в типе 'HTMLDivElement'.

centerControlDiv.index = 1; 

Вот мой код:

import { Component, ViewChild } from '@angular/core'; 
 
import { NavController } from 'ionic-angular'; 
 
import { Geolocation } from 'ionic-native'; 
 

 
declare var google; 
 

 
@Component({ 
 
    selector: 'page-homepage', 
 
    templateUrl: 'homepage.html' 
 
}) 
 

 
export class HomePage { 
 
    @ViewChild('map') mapElement; 
 
    map: any; 
 

 
    constructor(public navCtrl: NavController, 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(location); 
 
    }); 
 
    } 
 

 
    ionViewDidLoad(){ 
 
     this.initMap(); 
 
    } 
 

 
    initMap(){ 
 

 
    Geolocation.getCurrentPosition().then((position) => { 
 
     let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
 

 
     let mapOptions = { 
 
     center: latLng, 
 
     zoom: 15, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
     } 
 

 
     this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions); 
 

 
     var marker = new google.maps.Marker({ 
 
      position: latLng, 
 
      map: this.map 
 
     }); 
 

 
     // Create the DIV to hold the control and call the CenterControl() constructor 
 
     // passing in this DIV. 
 
     var centerControlDiv = document.createElement('div'); 
 
     var centerControl = new HomePage(); 
 

 
     centerControlDiv.index = 1; 
 
     this.map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv); 
 

 
    },(err) => { 
 
     console.log(err); 
 
     } 
 
    ); 
 

 
    } 
 

 
}
page-homepage { 
 
    #map{ 
 
    height: 90%; 
 
    width: 100%; 
 
    } 
 
}
<ion-header> 
 
    <ion-navbar> 
 
    <button ion-button menuToggle> 
 
     <ion-icon name="menu"></ion-icon> 
 
    </button> 
 
    <ion-title>Google Custom</ion-title> 
 

 
    </ion-navbar> 
 
</ion-header> 
 

 
<ion-content> 
 
    <div #map id="map"> 
 

 
    </div> 
 
</ion-content>

Я хочу сделать что-то вроде этого https://developers.google.com/maps/documentation/javascript/examples/control-custom?hl=es-419

ответ

0

Используйте функцию setCenter, затем добавить кнопку в HTML :)

centerMapa(){ 
 
    let latLng = new google.maps.LatLng(this.lat, this.lng); 
 
    this.map.setCenter(latLng); 
 
}
<button (click)='centerMapa();' ion-button clear large color="dark" icon-only> 
 
    <ion-icon name="ios-navigate"></ion-icon> 
 
</button>

0

Вы пробовали удаление

var centerControl = new HomePage(); 

и запустить?

U не может назвать вашу домашнюю страницу, как функцию.

+0

Я пытался, но у меня есть другая ошибка: Свойство «Индекс» не существует на типе «HTMLDivElement». – VinzeG

+0

Я сделал то же самое (в rgds для индексации) и мои работы. Появляется ли ваша карта без пользовательских элементов управления? – Gene

+0

У меня получилось: Ошибка выполнения Не удается разрешить все параметры для HomePage: (NavController,?,?). – VinzeG