Saya perlu bantuan untuk membuat fungsi onclick berfungsi di konten InfoWindow saya.

Ini adalah bagian dari kode saya:

for (i = 0; i < markers.length; i++) {
    var position = new google.maps.LatLng(markers[i][0], markers[i][1]);
    var icon = {
        url:"http:///".concat(markers[i][3]),
        scaledSize: new google.maps.Size(20, 20), // scaled size
        origin: new google.maps.Point(0,0), // origin
        anchor: new google.maps.Point(0, 0)
    };
    marker = new google.maps.Marker({
        position: position,
        map: map,
        title: markers[i][4].toString().concat(' ').concat(markers[i][5].toString()),
        icon: icon, 
        url:'im:<sip:'+markers[i][6]+'>'
    });
    var infowindow = new google.maps.InfoWindow({
        content: ''
    });
    marker.addListener('mouseover', function() { 
        infowindow.setContent('<p><label>Name:</label> '+this.title+'</p>' +
            '<center><button class="btn btn-primary" \n\
            onclick="myFunction(){ window.location.assign(this.url);}">Call</button></center>'); 
         infowindow.open(map, this);
    });
}
-1
samer sboui 16 Agustus 2017, 12:44

2 jawaban

Jawaban Terbaik

Dalam fungsi penangan onclick Anda ini akan merujuk ke elemen tombol bukan objek penanda, itu sebabnya tidak berfungsi karena tombol bukan properti seperti url.

Anda dapat menggunakan tag dengan href untuk mengarahkan ulang ke lokasi yang Anda inginkan

Coba ini:

for( i = 0; i < markers.length; i++ ) {
 var position = new google.maps.LatLng(markers[i][0], markers[i][1]);
 var icon = {url:"http:///".concat(markers[i][3]),
             scaledSize: new google.maps.Size(20, 20), // scaled size
             origin: new google.maps.Point(0,0), // origin
             anchor: new google.maps.Point(0, 0) };
 marker = new google.maps.Marker({
     position: position,
     map: map,
     title: markers[i][4].toString().concat(' ').concat(markers[i][5].toString()),
     icon: icon, 
     url:'im:<sip:'+markers[i][6]+'>'
 });
 var infowindow = new google.maps.InfoWindow({
            content: ''
 });
 marker.addListener('mouseover', function() { 
    infowindow.setContent('<p><label>Name:</label> '+this.title+'</p>' +
                          '<center><a class="btn btn-primary" href="'+this.url+'">Call</a></center>'); 
    infowindow.open(map, this);
});
0
R.K.Saini 16 Agustus 2017, 10:33

Handler onclick sebenarnya tidak menjalankan apa pun. Anda hanya mendefinisikan fungsi di dalamnya. Coba ini:

 for( i = 0; i < markers.length; i++ ) {
     var position = new google.maps.LatLng(markers[i][0], markers[i][1]);
     var icon = {url:"http:///".concat(markers[i][3]),
                 scaledSize: new google.maps.Size(20, 20), // scaled size
                 origin: new google.maps.Point(0,0), // origin
                 anchor: new google.maps.Point(0, 0) };
     marker = new google.maps.Marker({
         position: position,
         map: map,
         title: markers[i][4].toString().concat(' ').concat(markers[i][5].toString()),
         icon: icon, 
         url:'im:<sip:'+markers[i][6]+'>'
     });
     var infowindow = new google.maps.InfoWindow({
                content: ''
     });
     marker.addListener('mouseover', function() { 
        infowindow.setContent('<p><label>Name:</label> '+this.title+'</p>' +
                              '<center><button class="btn btn-primary" \n\
                             onclick="window.location.assign(' + this.url + ');">Call</button></center>'); 
        infowindow.open(map, this);
    });
0
tomcek112 16 Agustus 2017, 10:30