Just snippet ... just code.
Dependency
coffeescript dburles:google-maps oakworks:marker-clusterer@=0.1.1
Why marker-clusterer 0.1.1? Because last version 0.1.2 doesn't work correct, you can see bug here.
Template
<body>
{{> markers}}
</body>
<template name="markers">
<div class="map-container">
{{> googleMap name="map" options=mapOptions}}
</div>
</template>
Styles
.map-container {
width: 800px;
height: 500px;
}
View
Template.markers.onCreated ->
GoogleMaps.load({ v: '3', key: '123', libraries: 'geometry,places' });
Template.markers.onRendered ->
GoogleMaps.ready("map", (map) ->
infowindow = new google.maps.InfoWindow()
bounds = new google.maps.LatLngBounds()
markers = []
# helpers
setInfowindow = (place, marker) ->
marker.addListener("click", ->
infowindow.setContent("<div><img src='#{place.icon}' width='18'>
#{place.name}<br>#{place.vicinity}</div>")
infowindow.open(map.instance, marker)
)
createMarkers = (results) ->
for place in results
pin = new google.maps.MarkerImage(place.icon, null, null, null, new google.maps.Size(32, 32));
latLng = new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng())
marker = new google.maps.Marker({
position: latLng,
icon: pin,
map: map.instance
});
markers.push(marker)
bounds.extend(latLng)
setInfowindow(place, marker)
# load
request =
location: map.options.center
radius: '1000'
service = new google.maps.places.PlacesService(map.instance)
service.nearbySearch(request, (results, status, pagination) ->
if status == google.maps.places.PlacesServiceStatus.OK
createMarkers(results)
if pagination.hasNextPage
pagination.nextPage()
map.instance.fitBounds(bounds);
markerCluster = new MarkerClusterer(map.instance, markers,
{'imagePath': 'https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m'})
)
)
Template.markers.helpers
mapOptions: ->
if GoogleMaps.loaded()
return {
center: new google.maps.LatLng(49.2348249, 28.399594),
zoom: 10
}
Result
