Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
Bagaimana Cara Mengatur Focus Infowindow Google Maps API ?
Selamat siang, bagaimana ya cara mengatur focus infowindow google maps.
Saat ini, ktika saya klik salah satu marker, sudah bisa memunculkan infowindow dengan data dari marker tersebut.
marker 2.jpg
Dan ketika saya klik marker yang lainnya, juga sudah menampilkan data dari marker tersebut. Tapi infowindow masih berfokus di marker yang sama.
bagaimana cara mengaturnya, biar bisa fokus di marker trsebut ? trimakasih
Berikut kode yang telah saya buat
<script>
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
zoom: 10,
center: { lat: -6.261493, lng: 106.810600 },
});
setMarkers(map);
}
const locations = @php print_r(json_encode($markers)) @endphp;
function setMarkers(map) {
for (let i = 0; i < locations.length; i++) {
const location = locations[i];
let html = "";
html += `<div id="content-${location[0]}">`;
html += `<div id="siteNotice">`;
html += `</div>`;
html += `<h1 id="firstHeading" class="firstHeading">${location[1]}</h1>`;
html += `<div id="bodyContent">`;
html += `<p>${location[2]}</p>`;
html += `<a href="reports/show/${location[0]}" class="btn btn-dark btn-sm">Detail</a>`;
html += `</div>`;
html += `</div>`;
const infowindow = new google.maps.InfoWindow({
content: html,
});
marker = new google.maps.Marker({
position: { lat: parseFloat(location[4]), lng: parseFloat(location[5]) },
map,
title: location[3]
});
marker.addListener("click", () => {
infowindow.open({
anchor: marker,
map,
shouldFocus: true,
});
});
console.log(location);
}
}
</script>
Tanggapan
Dulu saya pernah nyoba bikin kaya gitu persis, pake php native, nanti saya share kalo udha ketemu file projectnya.
2 Jawaban:
<div>Hai mas <a href="https://sekolahkoding.com/user/hilmih3101">@hilmih3101</a><br>Saya coba bantu jawab ya<br><br></div><div>penyebab markernya berfokus pada anchor yang sama yaitu karena peletakkan syntax di bawah ini ada di dalam function looping<br><br></div><pre> <em>const</em> infowindow = new google.maps.InfoWindow({ content: html, });</pre><div><br>coba di keluarin dari looping dulu mas untuk Infowindownya, dan bisa di tulis seperti berikut<br><br></div><pre>const infowindow = new google.maps.InfoWindow();</pre><div><br>dan untuk full scriptnya bisa seperti beriku :<br><br></div><pre><script> <em>function</em> initMap() { <em>const</em> map = new google.maps.Map(document.getElementById("map"), { zoom: 10, center: { lat: -6.261493, lng: 106.810600 }, });
setMarkers(map);
}
<em>const</em> locations = @php print_r(json_encode($markers)) @endphp;
<em>function</em> setMarkers(<em>map</em>) {
const infowindow = new google.maps.InfoWindow();
for (<em>let</em> i = 0; i &lt; locations.length; i++) {
<em>const</em> location = locations[i];
<em>let</em> html = "";
html += `&lt;div id="content-${location[0]}"&gt;`;
html += `&lt;div id="siteNotice"&gt;`;
html += `&lt;/div&gt;`;
html += `&lt;h1 id="firstHeading" class="firstHeading"&gt;${location[1]}&lt;/h1&gt;`;
html += `&lt;div id="bodyContent"&gt;`;
html += `&lt;p&gt;${location[2]}&lt;/p&gt;`;
html += `&lt;a href="reports/show/${location[0]}" class="btn btn-dark btn-sm"&gt;Detail&lt;/a&gt;`;
html += `&lt;/div&gt;`;
html += `&lt;/div&gt;`;
marker = new google.maps.Marker({
position: { lat: parseFloat(location[4]), lng: parseFloat(location[5]) },
map,
title: location[3]
});
marker.addListener("click", () =&gt; {
infowindow.setContent(html);
infowindow.open({
anchor: marker,
map
});
});
console.log(location);
}
}
</script></pre><div><br>semoga mambantu :)</div>
Tanggapan
thx mas @tantootnat, sy coba masih belum bisa
Jawaban Terpilih
<div>Case ini sudah selesai dengan mengubah scriptnya menjadi seperti ini.</div><pre><script> <em>function</em> initMap() { <em>var</em> myLatLng = { lat: -6.261493, lng: 106.810600 };
<em>var</em> map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: myLatLng
});
<em>var</em> infowindow = new google.maps.InfoWindow({});
setMarkers(map);
}
<em>var</em> locations = @php print_r(json_encode($markers)) @endphp;
<em>function</em> setMarkers(<em>map</em>) {
<em>var</em> bounds = new google.maps.LatLngBounds();
for (<em>var</em> i = 0; i &lt; locations.length; i++) {
<em>var</em> location = locations[i];
<em>var</em> marker;
<em>var</em> contentString =
'&lt;div id="content"&gt;' +
'&lt;div id="siteNotice"&gt;' +
"&lt;/div&gt;" +
'&lt;h1 id="firstHeading" class="firstHeading"&gt;'+location[1]+'&lt;/h1&gt;' +
'&lt;div id="bodyContent"&gt;' +
'&lt;p&gt;' + location[2] + '&lt;/p&gt;' +
'&lt;small class="text-muted"&gt; Reported by' + location[6] + '&lt;/small&gt;' +
'&lt;br&gt;&lt;br&gt;' +
'&lt;a href="reports/show/'+location[0]+'" class="btn btn-dark btn-sm"&gt;Detail&lt;/a&gt;' +
'&lt;/div&gt;' +
'&lt;/div&gt;';
<em>var</em> infoWindow = new google.maps.InfoWindow({
content: contentString
});
marker = new google.maps.Marker({
position: {
lat: parseFloat(location[4]),
lng: parseFloat(location[5])
},
map: map,
info: contentString,
});
bounds.extend(marker.getPosition());
google.maps.event.addListener(marker, 'click', <em>function</em>() {
infoWindow.setContent(<em>this</em>.info);
infoWindow.open(map, <em>this</em>);
});
}
map.fitBounds(bounds);
}
</script></pre>