Created
July 19, 2018 11:19
-
-
Save AhmedKorim/895ee33e609d71f162655b43fb067537 to your computer and use it in GitHub Desktop.
Udacity google maps api
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var map; | |
// Create a new blank array for all the listing markers. | |
// -- @deleted // | |
// var markers = []; | |
function initMap() { | |
// Constructor creates a new map - only center and zoom are required. | |
map = new google.maps.Map(document.getElementById('map'), { | |
center: {lat: 40.7413549, lng: -73.9980244}, | |
zoom: 13 | |
}); | |
// These are the real estate listings that will be shown to the user. | |
// Normally we'd have these in a database instead. | |
var locations = [ | |
{title: 'Park Ave Penthouse', location: {lat: 40.7713024, lng: -73.9632393}}, | |
{title: 'Chelsea Loft', location: {lat: 40.7444883, lng: -73.9949465}}, | |
{title: 'Union Square Open Floor Plan', location: {lat: 40.7347062, lng: -73.9895759}}, | |
{title: 'East Village Hip Studio', location: {lat: 40.7281777, lng: -73.984377}}, | |
{title: 'TriBeCa Artsy Bachelor Pad', location: {lat: 40.7195264, lng: -74.0089934}}, | |
{title: 'Chinatown Homey Space', location: {lat: 40.7180628, lng: -73.9961237}} | |
]; | |
var largeInfowindow = new google.maps.InfoWindow(); | |
var bounds = new google.maps.LatLngBounds(); | |
// The following group uses the location array to create an array of markers on initialize. | |
for (var i = 0; i < locations.length; i++) { | |
// Get the position from the location array. | |
var position = locations[i].location; | |
var title = locations[i].title; | |
// Create a marker per location, and put into markers array. | |
var marker = new google.maps.Marker({ | |
map: map, | |
position: position, | |
title: title, | |
animation: google.maps.Animation.DROP, | |
id: i | |
}); | |
// Push the marker to our array of markers. | |
// -- @deleted // | |
// markers.push(marker); | |
// Create an onclick event to open an infowindow at each marker. | |
marker.addListener('click', function() { | |
populateInfoWindow(this, largeInfowindow); | |
}); | |
// -- @deleted used marker it self instead of markers[i] // | |
bounds.extend(marker.position); | |
} | |
// Extend the boundaries of the map for each marker | |
map.fitBounds(bounds); | |
} | |
// This function populates the infowindow when the marker is clicked. We'll only allow | |
// one infowindow which will open at the marker that is clicked, and populate based | |
// on that markers position. | |
function populateInfoWindow(marker, infowindow) { | |
// Check to make sure the infowindow is not already opened on this marker. | |
console.log(infowindow.marker); | |
if (infowindow.marker != marker) { | |
infowindow.marker = marker; | |
infowindow.setContent('<div style="color: white ; background: #525454 ;">' + marker.title + '</div>'); | |
infowindow.open(map, marker); | |
// Make sure the marker property is cleared if the infowindow is closed. | |
infowindow.addListener('closeclick',function(){ | |
infowindow.setMarker = null; | |
}); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment