Step-1:
add your google map api in your header.php file:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=Your_API_Key&callback=initMap"></script>
Step-2:
Create Function in Functions.php file for fetch Api adress list and pass to js function:
// Fetch Api Data And Pass data to JavaScript Functions
function enqueue_google_maps_scripts() {
$url = 'https://example.com/public-api/resources/locations/v2.0';
$response = wp_remote_get($url, array(
'headers' => array(
'Accept' => 'application/json',
'Authorization' => 'Bearer Your API Token',
),
));
if (is_wp_error($response)) {
error_log('Error fetching data: ' . $response->get_error_message());
return [];
}
$data = wp_remote_retrieve_body($response);
$locations = json_decode($data, true); // Decode JSON into an array
// Enqueue Google Maps API
wp_enqueue_script(
'google-maps-api',
'https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY',
[],
null,
true
);
// Enqueue custom map script
wp_enqueue_script(
'custom-google-map',
get_template_directory_uri() . '/js/custom-google-map.js',
['google-maps-api'],
null,
true
);
// Fetch and pass location data to JavaScript
// $locations = get_citicharge_locations();
// echo '<pre>';
// print_r($locations);
// echo '</pre>';
wp_localize_script('custom-google-map', 'citichargeData', [
'locations' => $locations,
]);
}
add_action('wp_enqueue_scripts', 'enqueue_google_maps_scripts');
Step-3:
create js file like /js/custom-google-map.js and add code:
function initMap() {
// console.log("Initializing map...");
// console.log("Locations data:", citichargeData.locations);
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 5,
center: { lat: 51.509865, lng: -0.118092 } // Example: Centered on London
});
var bounds = new google.maps.LatLngBounds();
var locations = citichargeData.locations;
// var locations = [
// {
// geoposition: { latitude: 42.6710963, longitude: 23.3520653 },
// name: [{ translation: "Ampeco Office" }],
// address: [{ translation: "Sofia, Bulgaria" }]
// },
// {
// geoposition: { latitude: 51.5194133, longitude: -0.1269566 },
// name: [{ translation: "British Museum" }],
// address: [{ translation: "London, UK" }]
// }
// // Add other locations
// ];
locations.data.forEach(function (location) {
// console.log("Loop Data",location);
var position = {
lat: location.geoposition.latitude,
lng: location.geoposition.longitude
};
// console.log("position",position);
var marker = new google.maps.Marker({
position: position,
map: map,
title: location.name[0].translation
});
var infoWindow = new google.maps.InfoWindow({
content: ` <h4>${location.name[0].translation}</h4>
<p>${location.address[0].translation}</p>
<button onclick="viewOnGoogleMaps(${location.geoposition.latitude}, ${location.geoposition.longitude})">View on Google Maps</button>`
});
marker.addListener("click", function () {
infoWindow.open(map, marker);
});
bounds.extend(position);
});
map.fitBounds(bounds);
}
function viewOnGoogleMaps(lat, lng) {
var googleMapsUrl = `https://www.google.com/maps?q=${lat},${lng}`;
window.open(googleMapsUrl, '_blank'); // Open Google Maps in a new tab
}
Step-4:
create shortcod for display Google Map:
function display_google_map_shortcode() {
return '<div id="map" style="width: 100%; height: 500px;"></div>';
}
add_shortcode('google_map', 'display_google_map_shortcode');
Top comments (0)