importPackage(java.io);
importPackage(java.lang);
// your code goes here
{
let map, infoWindow;
function initMap() {
map = new google.maps.Map(document.getElementById("map"), {
center: { lat: -34.397, lng: 150.644 },
zoom: 6,
});
infoWindow = new google.maps.InfoWindow();
const locationButton = document.createElement("button");
locationButton.textContent = "Pan to Current Location";
locationButton.classList.add("custom-map-control-button");
map.controls[google.maps.ControlPosition.TOP_CENTER].push(locationButton);
locationButton.addEventListener("click", () => {
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
(position) => {
const pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
infoWindow.setPosition(pos);
infoWindow.setContent("Location found.");
infoWindow.open(map);
map.setCenter(pos);
},
() => {
handleLocationError(true, infoWindow, map.getCenter());
}
);
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
});
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(
browserHasGeolocation
? "Error: The Geolocation service failed."
: "Error: Your browser doesn't support geolocation."
);
infoWindow.open(map);
}
}
aW1wb3J0UGFja2FnZShqYXZhLmlvKTsKaW1wb3J0UGFja2FnZShqYXZhLmxhbmcpOwoKLy8geW91ciBjb2RlIGdvZXMgaGVyZQp7CmxldCBtYXAsIGluZm9XaW5kb3c7CgpmdW5jdGlvbiBpbml0TWFwKCkgewogIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hcCIpLCB7CiAgICBjZW50ZXI6IHsgbGF0OiAtMzQuMzk3LCBsbmc6IDE1MC42NDQgfSwKICAgIHpvb206IDYsCiAgfSk7CiAgaW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KCk7CgogIGNvbnN0IGxvY2F0aW9uQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CgogIGxvY2F0aW9uQnV0dG9uLnRleHRDb250ZW50ID0gIlBhbiB0byBDdXJyZW50IExvY2F0aW9uIjsKICBsb2NhdGlvbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJjdXN0b20tbWFwLWNvbnRyb2wtYnV0dG9uIik7CiAgbWFwLmNvbnRyb2xzW2dvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5UT1BfQ0VOVEVSXS5wdXNoKGxvY2F0aW9uQnV0dG9uKTsKICBsb2NhdGlvbkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgIC8vIFRyeSBIVE1MNSBnZW9sb2NhdGlvbi4KICAgIGlmIChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pIHsKICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigKICAgICAgICAocG9zaXRpb24pID0+IHsKICAgICAgICAgIGNvbnN0IHBvcyA9IHsKICAgICAgICAgICAgbGF0OiBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUsCiAgICAgICAgICAgIGxuZzogcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSwKICAgICAgICAgIH07CgogICAgICAgICAgaW5mb1dpbmRvdy5zZXRQb3NpdGlvbihwb3MpOwogICAgICAgICAgaW5mb1dpbmRvdy5zZXRDb250ZW50KCJMb2NhdGlvbiBmb3VuZC4iKTsKICAgICAgICAgIGluZm9XaW5kb3cub3BlbihtYXApOwogICAgICAgICAgbWFwLnNldENlbnRlcihwb3MpOwogICAgICAgIH0sCiAgICAgICAgKCkgPT4gewogICAgICAgICAgaGFuZGxlTG9jYXRpb25FcnJvcih0cnVlLCBpbmZvV2luZG93LCBtYXAuZ2V0Q2VudGVyKCkpOwogICAgICAgIH0KICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IEdlb2xvY2F0aW9uCiAgICAgIGhhbmRsZUxvY2F0aW9uRXJyb3IoZmFsc2UsIGluZm9XaW5kb3csIG1hcC5nZXRDZW50ZXIoKSk7CiAgICB9CiAgfSk7Cn0KCmZ1bmN0aW9uIGhhbmRsZUxvY2F0aW9uRXJyb3IoYnJvd3Nlckhhc0dlb2xvY2F0aW9uLCBpbmZvV2luZG93LCBwb3MpIHsKICBpbmZvV2luZG93LnNldFBvc2l0aW9uKHBvcyk7CiAgaW5mb1dpbmRvdy5zZXRDb250ZW50KAogICAgYnJvd3Nlckhhc0dlb2xvY2F0aW9uCiAgICAgID8gIkVycm9yOiBUaGUgR2VvbG9jYXRpb24gc2VydmljZSBmYWlsZWQuIgogICAgICA6ICJFcnJvcjogWW91ciBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBnZW9sb2NhdGlvbi4iCiAgKTsKICBpbmZvV2luZG93Lm9wZW4obWFwKTsKfQoKfQ==