Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.2.BETA1, 3.2
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 3, ACE Components
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial

      Description

      Add a new ace:gMap component that will support the Google Maps JavaScript API v3.

        Activity

        Hide
        Brennan Mckinney added a comment -

        An overview of ace:gMap features as of rev:30615
        For reference, the google API is here: https://developers.google.com/maps/documentation/javascript/reference. If I refer to something like 'options', what I'm talking about can be found in the list.
        Ace:gMap - the main map, as well as options pertaining to it.
        • Basic attributes of a gMap (lat/lng, map type and zoom) are accessible and can be used via the latitude/longitude, zoomLevel and type attributes.
        • Can center the map based on a typed location. Uses address attribute to determine where, but will only update when locateAddress = true, or the page is initializing.
        • Options attribute can control any of the 'mapOptions' options. The format to use is options= "property:value, property:value,..."
        o More complex options can be nested within the options attribute. For example, options="zoomControlOptions:

        {style: google.maps.ZoomControlStyle.SMALL, position: google.maps.ControlPosition.BOTTOM_CENTER }

        " makes the zoom control small and locates it in the bottom of the screen.
        Ace:gMapLayer - Adds layers to the gMap. Anything under the 'layers' category in the API reference.
        • Bicycling, KML, Traffic, Transit all work fine.
        o Unsure about fusionTablesLayer, as I can't actually test that. Fusion Tables seems to be in a closed beta, and I don't have the privileges to access it.
        • For Bicycling, Traffic or Transit all that is needed is to specify mapType=bicycling/traffic/transit.
        • KML layers requires url attribute to be set to desired site.
        o KML layer options can be set with options
        • The KMLmetadata and KMLstatus are currently inaccessible.
        Ace:gMapMarker - dedicated subcomponent for gMap Markers. (Not sure if we should merge with gMapOverlay, to group with similar things, or leave it here for ease of access.
        • Fairly basic. Latitude/Longitude sets position, and options allow access to MarkerOptions.
        • Would be good if we could return the current location/reference of a marker, and place a marker on an address. (See improvements, below.)
        Ace:gMapOverlay - Controls the overlays portion of the API. Recently updated by google, so we don't have all of the features within. Points are currently set as (lat,lng):(lat,lng):...
        • Working:
        o Polyline

        • Set shape to line/polyline, points determine where the line goes, in order. Options set polylineOptions
          o Polygon
        • Set shape to polygon, points determine the shape, with each point connecting to the next and last connecting to the first. Options set PolygonOptions
          o Rectangle
        • Set shape to rectangle, first point determines top left corner. Second determines bottom right. Others are ignored. Options set RectangleOptions.
          o Circle
        • Set shape to circle. First point sets center, others are ignored. Options set circle options, and radius property needs to be set.
          • Not Working:
          o Ground overlay: Very different from the rest of the overlays, putting an image on the map.
          o Symbol: New feature that I haven't gotten to play with much yet. Looks more complicated than existing overlays.
          o Marker: Already in gMapMarker
          Ace:gMapServices - The services section of the API.
          • Working
          o DirectionsService
        • Prints directions between given points on map. First point is start, last point is end, all intermediate points function as waypoints that the directions must pass through. Points are separated by a :, and can either be (lat,lng) or a written address.
        • TravelMode option needs to be set. Any other option under DirectionsRequest is put in options.
        • Cannot currently update DirectionsRendererOptions. This is important, as I believe that that needs to be possible to get a written output of directions, though I am not sure.
          o ElevationService
        • Takes points in form (lat,lng):(lat,lng):...
        • Returns the height of each point given in an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested.
          o MaxZoomService
        • Takes one point as (lat,lng)
        • Returns the maximum zoom at point given in an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested.
          o DistanceMatrixService
        • Takes two points as either written address or (lat,lng) separated by a :
        • Returns the distance between the two points as an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested.
          • Not working
          o Geocoder
          Two things that would improve the component majorly:
          1) A general geocoder method that all of the other components can call on. Google has made most of the other services/overlays/markers/etc require a lat/lng point, which can be a real pain to find properly. If we create a geocoder method and allow addresses to be used in all of these, with them being converted to lat/lngs behind the scenes, it would make our components significantly easier to use and give us an advantage even over the official google maps API.
          2) Currently, every value that the map has is being re-updated from the bean each time a value is changed. What this means is that any changes made to the map through the map itself (ie, dragging the view, changing the zoom, altering the map type) is undone and reset to whatever is in the bean. This makes the component seem very clunky, and can be rather irritating. There are two ways to fix it, however. The first (and best) way of doing it is by getting the javascript to update the values in the bean as it gets changed in the map. I'm not sure how feasible this is, but I've been told that we have a bridge designed to accomplish it. If we can get it working, however, it will pay off in other ways besides just making it look smoother. The other way is using logic in the renderers to only reupdate the portions of the map/component that have to be changed. I've attached a version of ace:gMapRenderer that will show how it looks in beta, but this version doesn't work properly after a page refresh.

        Feasibility of including remaining sections(the libraries):
        Geometry Library - Background library already being used by overlay. No further access needed.

        AdSense Library - Will likely fit with ace:gMap

        Panoramio Library - Will likely fit with ace:gMap

        Places Library - Will not fit with ace:gMap, likely requires a separate component if desired.

        Drawing Library - Background library already being used by overlay. No further access needed.

        Weather Library - Will fit with ace:gMap

        Visualization Library - Will fit with ace:gMap

        Show
        Brennan Mckinney added a comment - An overview of ace:gMap features as of rev:30615 For reference, the google API is here: https://developers.google.com/maps/documentation/javascript/reference . If I refer to something like 'options', what I'm talking about can be found in the list. Ace:gMap - the main map, as well as options pertaining to it. • Basic attributes of a gMap (lat/lng, map type and zoom) are accessible and can be used via the latitude/longitude, zoomLevel and type attributes. • Can center the map based on a typed location. Uses address attribute to determine where, but will only update when locateAddress = true, or the page is initializing. • Options attribute can control any of the 'mapOptions' options. The format to use is options= "property:value, property:value,..." o More complex options can be nested within the options attribute. For example, options="zoomControlOptions: {style: google.maps.ZoomControlStyle.SMALL, position: google.maps.ControlPosition.BOTTOM_CENTER } " makes the zoom control small and locates it in the bottom of the screen. Ace:gMapLayer - Adds layers to the gMap. Anything under the 'layers' category in the API reference. • Bicycling, KML, Traffic, Transit all work fine. o Unsure about fusionTablesLayer, as I can't actually test that. Fusion Tables seems to be in a closed beta, and I don't have the privileges to access it. • For Bicycling, Traffic or Transit all that is needed is to specify mapType=bicycling/traffic/transit. • KML layers requires url attribute to be set to desired site. o KML layer options can be set with options • The KMLmetadata and KMLstatus are currently inaccessible. Ace:gMapMarker - dedicated subcomponent for gMap Markers. (Not sure if we should merge with gMapOverlay, to group with similar things, or leave it here for ease of access. • Fairly basic. Latitude/Longitude sets position, and options allow access to MarkerOptions. • Would be good if we could return the current location/reference of a marker, and place a marker on an address. (See improvements, below.) Ace:gMapOverlay - Controls the overlays portion of the API. Recently updated by google, so we don't have all of the features within. Points are currently set as (lat,lng):(lat,lng):... • Working: o Polyline Set shape to line/polyline, points determine where the line goes, in order. Options set polylineOptions o Polygon Set shape to polygon, points determine the shape, with each point connecting to the next and last connecting to the first. Options set PolygonOptions o Rectangle Set shape to rectangle, first point determines top left corner. Second determines bottom right. Others are ignored. Options set RectangleOptions. o Circle Set shape to circle. First point sets center, others are ignored. Options set circle options, and radius property needs to be set. • Not Working: o Ground overlay: Very different from the rest of the overlays, putting an image on the map. o Symbol: New feature that I haven't gotten to play with much yet. Looks more complicated than existing overlays. o Marker: Already in gMapMarker Ace:gMapServices - The services section of the API. • Working o DirectionsService Prints directions between given points on map. First point is start, last point is end, all intermediate points function as waypoints that the directions must pass through. Points are separated by a :, and can either be (lat,lng) or a written address. TravelMode option needs to be set. Any other option under DirectionsRequest is put in options. Cannot currently update DirectionsRendererOptions. This is important, as I believe that that needs to be possible to get a written output of directions, though I am not sure. o ElevationService Takes points in form (lat,lng):(lat,lng):... Returns the height of each point given in an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested. o MaxZoomService Takes one point as (lat,lng) Returns the maximum zoom at point given in an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested. o DistanceMatrixService Takes two points as either written address or (lat,lng) separated by a : Returns the distance between the two points as an alert. Not sure if this is best output method. Also, should probably update so that it has a true/false, so that it will only display when requested. • Not working o Geocoder Two things that would improve the component majorly: 1) A general geocoder method that all of the other components can call on. Google has made most of the other services/overlays/markers/etc require a lat/lng point, which can be a real pain to find properly. If we create a geocoder method and allow addresses to be used in all of these, with them being converted to lat/lngs behind the scenes, it would make our components significantly easier to use and give us an advantage even over the official google maps API. 2) Currently, every value that the map has is being re-updated from the bean each time a value is changed. What this means is that any changes made to the map through the map itself (ie, dragging the view, changing the zoom, altering the map type) is undone and reset to whatever is in the bean. This makes the component seem very clunky, and can be rather irritating. There are two ways to fix it, however. The first (and best) way of doing it is by getting the javascript to update the values in the bean as it gets changed in the map. I'm not sure how feasible this is, but I've been told that we have a bridge designed to accomplish it. If we can get it working, however, it will pay off in other ways besides just making it look smoother. The other way is using logic in the renderers to only reupdate the portions of the map/component that have to be changed. I've attached a version of ace:gMapRenderer that will show how it looks in beta, but this version doesn't work properly after a page refresh. Feasibility of including remaining sections(the libraries): Geometry Library - Background library already being used by overlay. No further access needed. AdSense Library - Will likely fit with ace:gMap Panoramio Library - Will likely fit with ace:gMap Places Library - Will not fit with ace:gMap, likely requires a separate component if desired. Drawing Library - Background library already being used by overlay. No further access needed. Weather Library - Will fit with ace:gMap Visualization Library - Will fit with ace:gMap
        Hide
        Brennan Mckinney added a comment -

        Alpha version of smooth gMap.

        Show
        Brennan Mckinney added a comment - Alpha version of smooth gMap.
        Hide
        Arturo Zambrano added a comment - - edited

        Currently supported features:
        Map

        • Specify latitude and longitude, zoom level, address to locate, and map type.
          Controls
        • Add/remove controls of the following types: overview, pan, rotate, scale, streetview, zoom.
        • Specify position of control within map window.
        • Specify control style.
          Marker
        • Specify latitude and longitude, and animation.
          Overlays
        • Create Line, Polygon, Rectangle, and Circle shapes.
        • Specify array of points.
          InfoWindow
        • Specify latitude and longitude.
        • Specify text content or nest components inside InfoWindow.
        • Ability to nest component inside a marker to use its position.
          Services
        • Use Directions, Elevation, MaxZoom, and Distance services
        • Specify array of points.
          Layers
        • Add Bicycling, Traffic, Transit, FusionTables and KML layers.
        • Specify whether layer is visible or not.
        • Specify KML file URL.
          Advanced options are available via the 'options' attribute in the main ace:gMap component and subcomponents.
        Show
        Arturo Zambrano added a comment - - edited Currently supported features: Map Specify latitude and longitude, zoom level, address to locate, and map type. Controls Add/remove controls of the following types: overview, pan, rotate, scale, streetview, zoom. Specify position of control within map window. Specify control style. Marker Specify latitude and longitude, and animation. Overlays Create Line, Polygon, Rectangle, and Circle shapes. Specify array of points. InfoWindow Specify latitude and longitude. Specify text content or nest components inside InfoWindow. Ability to nest component inside a marker to use its position. Services Use Directions, Elevation, MaxZoom, and Distance services Specify array of points. Layers Add Bicycling, Traffic, Transit, FusionTables and KML layers. Specify whether layer is visible or not. Specify KML file URL. Advanced options are available via the 'options' attribute in the main ace:gMap component and subcomponents.
        Hide
        Florian Hell added a comment - - edited

        Still an Issue with gMapMarker, markers are not shown if the gmap width is smaller than 1000px. Weird Bug

        Show
        Florian Hell added a comment - - edited Still an Issue with gMapMarker, markers are not shown if the gmap width is smaller than 1000px. Weird Bug
        Hide
        Brennan Mckinney added a comment - - edited

        Could not reproduce above issue. Is there any way you can give us an example of the code you're using?

        Show
        Brennan Mckinney added a comment - - edited Could not reproduce above issue. Is there any way you can give us an example of the code you're using?
        Hide
        Arturo Zambrano added a comment - - edited

        Improved InfoWindow component to support not only HTML markup but components as well and support dynamic updates of those components while inside the window. Committed to trunk at revision 31459

        Show
        Arturo Zambrano added a comment - - edited Improved InfoWindow component to support not only HTML markup but components as well and support dynamic updates of those components while inside the window. Committed to trunk at revision 31459
        Hide
        Arturo Zambrano added a comment - - edited

        Marking this JIRA as Fixed. The component and subcomponents have been created and are functional. All other issues found should be tracked in separate JIRAs.
        Created ICE-8658 to track the issue with ace:tabSet.

        Show
        Arturo Zambrano added a comment - - edited Marking this JIRA as Fixed. The component and subcomponents have been created and are functional. All other issues found should be tracked in separate JIRAs. Created ICE-8658 to track the issue with ace:tabSet.

          People

          • Assignee:
            Arturo Zambrano
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: