Skip to content

Commit f0ead7d

Browse files
committed
Markers are correctly changing colors when another marker is selected
1 parent 3900f52 commit f0ead7d

File tree

1 file changed

+35
-55
lines changed

1 file changed

+35
-55
lines changed

src/App.js

Lines changed: 35 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ class App extends Component {
1919
state = {
2020
venues: [],
2121
query: ''
22-
//openList
23-
//handleItemClick: []
2422
}
2523

2624
showSettings (event) {
@@ -31,7 +29,6 @@ class App extends Component {
3129
//Life cycle event
3230
componentDidMount() {
3331
this.getVenues()
34-
//this.renderMap()
3532
}
3633

3734
handleStateChange (state) {
@@ -58,7 +55,6 @@ class App extends Component {
5855
renderMap = () => {
5956
try {
6057
loadScript("https://maps.googleapis.com/maps/api/js?client=gme-nianticinc&callback=initMap")
61-
//window.addEventListener('touchstart', passive: true);
6258
window.initMap = this.initMap
6359
}
6460
catch(err) {
@@ -85,14 +81,14 @@ console.error(err)
8581
})
8682
.catch(error =>{
8783
alert('Some error occurred while retrieving the data from Foursquare. Please check console for details')
88-
//<h1>Oops, there's a problem with the API</h1>
8984
})
9085
}
9186

9287
//handleItemClick=venues;
9388

9489
initMap = () => {
9590

91+
const markersArr=[];
9692
this.setState({handleItemClick: this.state.venues});/**/
9793
const scaledSize = new window.google.maps.Size(26, 43)
9894
const redMarker = {url: 'https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2_hdpi.png',
@@ -117,7 +113,6 @@ console.error(err)
117113
//loop over our venues
118114
//dynamic markers
119115
this.state.venues.map(myVenue => {
120-
121116
const address = myVenue.venue.location.address ?
122117
myVenue.venue.location.address : ''
123118

@@ -131,8 +126,6 @@ console.error(err)
131126
'" target="_blank">Learn More...</a>'}
132127
</strong> </p>`
133128
//<Img src=linkvar/>`
134-
135-
136129

137130
//Create markers
138131
myVenue.marker = new window.google.maps.Marker({
@@ -142,67 +135,54 @@ console.error(err)
142135
id: myVenue.venue.id,
143136
scaledSize,//marker size matches default size
144137

145-
//content: "<img src={`${myVenue.venue.bestPhoto.prefix}200x200`${myVenue.venue.bestPhoto.suffix}>"
146138
animation: window.google.maps.Animation.DROP
147-
})
148-
myVenue.marker.isOpen = false
149-
150-
151-
//window.addEventListener('touchstart', handleItemClick, true);
152-
153-
139+
});
140+
myVenue.marker.isOpen = false;
141+
markersArr.push(myVenue);
154142

155143
//Link marker and infowindow together
156144
myVenue.marker.addListener('click', function() {
157145
//Change the content
146+
infowindow.setContent(contentString);
147+
console.log(myVenue.marker);
158148

149+
markersArr.forEach(venue => {
150+
console.log(venue);
151+
venue.isOpen = false;
152+
venue.marker.setIcon(redMarker);
153+
});
159154

160-
infowindow.setContent(contentString)
161-
162-
let icon = myVenue.marker.getIcon();
163-
/*let redMarker = {url: 'https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2_hdpi.png',
164-
scaledSize
165-
}
166-
let greenMarker = {
167-
url: 'https://www.google.com/mapfiles/marker_green.png',
168-
//scaledSize
169-
}*/
170-
171-
if (!myVenue.marker.isOpen && (icon === undefined || icon === redMarker)) {
172-
console.log(myVenue.marker.isOpen)
155+
//Markers switch color when another marker is selected.
173156
myVenue.marker.isOpen = true
174-
console.log(myVenue.marker.isOpen)
157+
//console.log(myVenue.marker.isOpen)
175158
myVenue.marker.setIcon(greenMarker);
176-
myVenue.marker.setZIndex(9999)
177-
}
178-
179-
/*let icon = myVenue.marker.getIcon();
180-
if (icon === undefined || icon.indexOf('marker_green')) {
181-
myVenue.marker.setIcon('https://www.google.com/mapfiles/marker_green.png');
182-
myVenue.marker.setZIndex(100); //This brings the marker infront of the others if selected or active
183-
this.map.setZoom(13); //zooms to marker when selected
184-
this.map.setCenter(myVenue.marker.position) //centers to marker when selected
185-
} else {
186-
myVenue.marker.setIcon('https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi2_hdpi.png');
187-
}*/
159+
myVenue.marker.setZIndex(9999);
188160

189161
//open an infowindow
190162

191163
infowindow.open(map, myVenue.marker);
192-
193-
194-
195-
})
196-
197-
164+
});
198165

199166
return myVenue.marker;
200-
})
201-
202-
203-
204-
205-
}
167+
});
168+
169+
window.google.maps.event.addListener(infowindow, "closeclick", ()=>
170+
{
171+
this.state.venues.forEach(venue => {
172+
venue.isOpen = false;
173+
venue.marker.setIcon(redMarker);
174+
});
175+
});
176+
177+
window.google.maps.event.addListener(infowindow, "click", ()=>
178+
{
179+
this.state.venues.forEach(venue => {
180+
infowindow.close();
181+
venue.isOpen = false;
182+
venue.marker.setIcon(redMarker);
183+
});
184+
});
185+
};
206186

207187
//NOTES*****
208188
//There seems to be undefined in one of the venues' address
@@ -282,4 +262,4 @@ function loadScript(url) {
282262

283263
}
284264

285-
export default App;
265+
export default App;

0 commit comments

Comments
 (0)