Files
openfoodnetwork/app/assets/javascripts/search/gmaps4rails/gmaps4rails.mapquest.js.coffee
2013-08-09 13:20:49 +10:00

145 lines
4.6 KiB
CoffeeScript

#######################################################################################################
############################################## Map Quest #############################################
#######################################################################################################
# http://developer.mapquest.com/web/documentation/sdk/javascript/v7.0/api/MQA.Poi.html
class @Gmaps4RailsMapquest extends Gmaps4Rails
constructor: ->
super
#Map settings
@map_options = {type: "map"} #map type (map, sat, hyb)
@markers_conf = {}
@mergeWithDefault "markers_conf"
@mergeWithDefault "map_options"
#////////////////////////////////////////////////////
#/////////////// Basic Objects //////////////
#////////////////////////////////////////////////////
createPoint: (lat, lng) ->
return new MQA.Poi({lat: lat, lng: lng})
createLatLng: (lat, lng) ->
return {lat: lat, lng: lng}
createLatLngBounds: ->
createMap: ->
map = new MQA.TileMap( #// Constructs an instance of MQA.TileMap
document.getElementById(@map_options.id), #//the id of the element on the page you want the map to be added into
@map_options.zoom, #//intial zoom level of the map
{lat: @map_options.center_latitude, lng: @map_options.center_longitude},
@map_options.type) #//map type (map, sat, hyb)
MQA.withModule('zoomcontrol3', (->
map.addControl(
new MQA.LargeZoomControl3(),
new MQA.MapCornerPlacement(MQA.MapCorner.TOP_LEFT)
)
))
return map
createMarkerImage: (markerPicture, markerSize, origin, anchor, scaledSize) ->
#////////////////////////////////////////////////////
#////////////////////// Markers /////////////////////
#////////////////////////////////////////////////////
createMarker: (args)->
marker = new MQA.Poi( {lat: args.Lat, lng: args.Lng} )
if args.marker_picture != ""
icon = new MQA.Icon(args.marker_picture, args.marker_height, args.marker_width)
marker.setIcon(icon)
if args.marker_anchor != null
marker.setBias({x: args.marker_anchor[0], y: args.marker_anchor[1]})
if args.shadow_picture != ""
icon = new MQA.Icon(args.shadow_picture, args.shadow_height, args.shadow_width)
marker.setShadow(icon)
if args.shadow_anchor != null
marker.setShadowOffset({x: args.shadow_anchor[0], y: args.shadow_anchor[1]})
@addToMap marker
return marker
#// clear markers
clearMarkers: ->
for marker in markers
@clearMarker marker
#//show and hide markers
showMarkers: ->
for marker in markers
@showMarker marker
hideMarkers: ->
for marker in markers
@hideMarker marker
clearMarker: (marker) ->
@removeFromMap(marker.serviceObject)
showMarker: (marker) ->
#// marker.serviceObject
hideMarker: (marker) ->
#// marker.serviceObject
extendBoundsWithMarkers: ->
if @markers.length >=2
@boundsObject = new MQA.RectLL(@markers[0].serviceObject.latLng, @markers[1].serviceObject.latLng)
for marker in @markers
@boundsObject.extend marker.serviceObject.latLng
#////////////////////////////////////////////////////
#/////////////////// Clusterer //////////////////////
#////////////////////////////////////////////////////
createClusterer: (markers_array) ->
clearClusterer: ->
#//creates clusters
clusterize: ->
#////////////////////////////////////////////////////
#/////////////////// INFO WINDOW ////////////////////
#////////////////////////////////////////////////////
#// creates infowindows
createInfoWindow: (marker_container) ->
marker_container.serviceObject.setInfoTitleHTML(marker_container.description)
#//TODO: how to disable the mouseover display when using setInfoContentHTML?
#//marker_container.serviceObject.setInfoContentHTML(marker_container.description);
#////////////////////////////////////////////////////
#/////////////////// Other methods //////////////////
#////////////////////////////////////////////////////
fitBounds: ->
@serviceObject.zoomToRect @boundsObject if @markers.length >=2
@serviceObject.setCenter @markers[0].serviceObject.latLng if @markers.length == 1
centerMapOnUser: ->
@serviceObject.setCenter @userLocation
addToMap: (object) ->
@serviceObject.addShape object
removeFromMap: (object)->
@serviceObject.removeShape object
updateBoundsWithPolylines: ()->
updateBoundsWithPolygons: ()->
updateBoundsWithCircles: ()->
extendMapBounds :->
adaptMapToBounds: ->
@fitBounds()