[Geomoose-users] Geomoose 3 onclick action

Colas, Scott Scott.Colas at ct.gov
Fri Nov 30 11:16:09 PST 2018


Thanks for your help James, I think I will have to upgrade to Geomoose 3.

-Scott

From: James Klassen [mailto:klassen.js at gmail.com]
Sent: Wednesday, November 28, 2018 6:14 PM
To: Colas, Scott
Cc: geomoose-users at lists.osgeo.org
Subject: Re: [Geomoose-users] Geomoose 3 onclick action

I might be missing something here, but I suspect you may be mixing GeoMoose 2.9 and 3.x here.

In 3.x the highlighting would generally be done client side (as an example take a look at services/search.js which does so by adding vector features to the results/results layer) rather than the MapServer tricks used by 2.9.

(That isn't to say it would be impossible implement the MapServer tricks in 3.x, but it isn't how the demo works and I don't know how to do so off the top of my head.)


On Wed, Nov 28, 2018, 12:08 Colas, Scott <Scott.Colas at ct.gov<mailto:Scott.Colas at ct.gov> wrote:
Inside my new function “myZoomTo” is there a way I can highlight that specific area I am  zooming to.
My plan was to use runtime substitution and filter my map file to only highlight a specific one. But Im not sure where I can append to the url before it makes the request.

Thanks,
Scott

From: Geomoose-users [mailto:geomoose-users-bounces at lists.osgeo.org<mailto:geomoose-users-bounces at lists.osgeo.org>] On Behalf Of Jim Klassen
Sent: Wednesday, November 28, 2018 12:55 PM
To: Reynolds, Michael J. (MNIT)
Cc: GeoMOOSE Users List
Subject: Re: [Geomoose-users] Geomoose 3 onclick action

It looks like app.zoomToExtent() takes an extent and projection and app.zoomTo() takes a point (in lat/lon), and zoom level, but no projection.  This seems like it might be a bit on an oversight, but in the meantime gm3.util.projectFeatures() is available from services.  Paring that with app.zoomTo(point, zoom_level) looks like it would work.

You could do this in the template directly or add a helper function in your app.js.

Say something like (untested):

function myZoomTo(in_point, projection, zoom) {
  var point = gm3.util.projectFeatures([point], projection, 'EPSG:4326')[0];
  return app.zoomTo(point, zoom);
}


then call it from the template as:

myZoomTo({geometry.coordinates: [x, y]}, 'EPSG:26915', 16);

I'm not sure that using the global space for myZoomTo is best practice, but just an idea to get started.

I am also remembering something now about the search templates being able to reproject points, but it looks like that is using properties.boundedBy and app.zoomToExtent, so that might not apply.

On 11/28/2018 11:18 AM, Reynolds, Michael J. (MNIT) wrote:
The onClick would be in a search template used for rendering search results.  Once rendered and displayed to the user, the user could click the <a> and the onClick would execute the function to zoom to the location.

<div class="search-result">
                <div class="search-label">
                                {{ properties.name<http://properties.name> }}     </div>
                <div class="search-action">
                                <div style="padding: 2px">
                                                <a onclick='app.zoomToCoordinates([{{ geometry.coordinates.0 }},{{ geometry.coordinates.1 }}], 26915, 16)' class="zoomto-link">
                                                                <i class="fa fa-search"></i>
                                                                Zoom!
                                                </a>
                                </div>
                </div>
</div>

From: James Klassen [mailto:klassen.js at gmail.com]
Sent: Wednesday, November 28, 2018 10:44 AM
To: Reynolds, Michael J. (MNIT) <mike.reynolds at state.mn.us><mailto:mike.reynolds at state.mn.us>
Cc: GeoMOOSE Users List <geomoose-users at lists.osgeo.org><mailto:geomoose-users at lists.osgeo.org>
Subject: Re: [Geomoose-users] Geomoose 3 onclick action

I'm lost.  Where is the onClick coming from (DOM element, general description, ...)?

I know you can create a service that asks the user to click a point on the map and returns the coordinate, etc.  You can call the app.* from the HTML returned by the service rendering template (and maybe even earlier) without worrying about react/dispatch/etc.

I am working on a jump to USNG coordinate service in a branch on my fork (klassenjs/gm3) that does both of the above.

On Tue, Nov 27, 2018, 06:39 Reynolds, Michael J. (MNIT) <mike.reynolds at state.mn.us<mailto:mike.reynolds at state.mn.us> wrote:
We're trying to create an onClick() event that passes coordinates, srid, and zoom level in and moves the map to that location.

It seems like the onClick event would need to create an action loaded with the parameters, register and then dispatch or run it, so would that be a  function we create in our app's app.js?

Plus we would then need to create the zoom action which we would like to transform the coordinates from in-srid to web Mercator and then move the map.  Are Proj and mapActions available to actions at runtime?

onClick => app.zoomToCoordinates() => dispatch ZoomToCoordinates action to transform coordinates and move map.

There's a gm3 zoomTo() function now but it expects lat,lon.  We're not currently modifying any of the core geomoose 3 code and hoping to be able to add this modification to our app's part of the code.

Open to any ideas, even scrapping this procedure with a shorter one if there's a way to control the map without dispatching an action but that would mean the js function somehow needs access to the app Proj library and map object. Right?

Michael Reynolds

_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.osgeo.org<mailto:Geomoose-users at lists.osgeo.org>
https://lists.osgeo.org/mailman/listinfo/geomoose-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geomoose-users/attachments/20181130/e4846ef8/attachment-0001.html>


More information about the Geomoose-users mailing list