Hi Christian,
fyi, I've just added a new LocationLookupService class to my github repo
[1], to make it easier to specify locations.  README is updated to show
usage.

Thx again for the idea,

Cheers
Dan

[1] https://github.com/danhaywood/isis-wicket-gmap3


On 25 January 2013 00:06, Christian Steinebach <
[email protected]> wrote:

> Hi Dan,
>
> sounds better, yes. :-) The info returned from google contains
> also much more than only the location. A service could provide
> that info as well.
>
>            Christian
> ________________________________________
> From: Dan Haywood [[email protected]]
> Sent: Thursday, January 24, 2013 12:14 PM
> To: [email protected]
> Subject: Re: isis compile from source, gmaps2 widget?
>
> Hi Christian,
> This is a nice idea, but having a value type make calls out to the network
> isn't the sort of thing it ought to do.  But what would make sense is to
> wrap this up into a domain service that can then be injected into entities,
> eg something like a LocationLookupService.
>
> Let me take your code and refactor it a little.
>
> Cheers
> Dan
>
> On 23 January 2013 18:45, Christian Steinebach <
> [email protected]> wrote:
>
> > Hi again!
> >
> > A 'quick and dirty' extension of Location.java to obtain the location
> from
> > google based on an address string.
> >
> > Location.fromGoogleAddress("Selbu, Norway")
> > Location.fromGoogleAddress("Downing street 1,London,UK");
> >
> >
> > As long as google can make any sense out of the address it will return a
> > result.
> > May use xml or json, xml used here.
> > Dependencies
> >
> >         <dependency>
> >             <groupId>commons-httpclient</groupId>
> >             <artifactId>commons-httpclient</artifactId>
> >             <version>3.1</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.jdom</groupId>
> >             <artifactId>jdom</artifactId>
> >             <version>1.1.3</version>
> >         </dependency>
> >
> > Just an idea.
> >
> >         Cheers
> >             Christian
> >
> >
> >
> >
> > package com.danhaywood.isis.wicket.gmap3.applib;
> >
> > import java.io.Serializable;
> > import java.io.StringReader;
> > import org.apache.commons.httpclient.HttpClient;
> > import org.apache.commons.httpclient.methods.GetMethod;
> > import org.apache.commons.httpclient.util.URIUtil;
> >
> > import org.apache.isis.applib.annotation.Value;
> > import org.jdom.Document;
> > import org.jdom.Element;
> > import org.jdom.input.SAXBuilder;
> >
> > /**
> >  * Value type representing a location on a map.
> >  *
> >  */
> > @Value(semanticsProviderClass = LocationSemanticsProvider.class)
> > public class Location implements Serializable {
> >
> >     private static final long serialVersionUID = 1L;
> >     static final Location DEFAULT_VALUE = new Location(51.4777479, 0.0d);
> > // Greenwich Royal Observatory
> >     static final String BASEURL = "
> > http://maps.googleapis.com/maps/api/geocode/";;
> >     static final String MODE = "xml";
> >     static final HttpClient httpclient = new HttpClient();
> >     static final GetMethod get = new GetMethod(BASEURL + MODE);
> >
> >     /**
> >      * Factory method
> >      *
> >      * @see #toString()
> >      */
> >     public static Location fromString(String encodedString) {
> >         final String[] split = encodedString.split(";");
> >         try {
> >             double latitude = Double.parseDouble(split[0]);
> >             double longitude = Double.parseDouble(split[1]);
> >             return new Location(latitude, longitude);
> >         } catch (Exception e) {
> >             return null;
> >         }
> >     }
> >
> >     public static Location fromGoogleAddress(String address) {
> >         boolean sensor = false;
> >         String query = "?address=" + address + "&sensor=" + sensor;
> >
> >         try {
> >             get.setQueryString(URIUtil.encodeQuery(query));
> >             httpclient.executeMethod(get);
> >             String xml = get.getResponseBodyAsString();
> >             SAXBuilder builder = new SAXBuilder();
> >             Document doc = builder.build(new StringReader(xml));
> >             Element root = doc.getRootElement();
> >             String lat =
> >
> root.getChild("result").getChild("geometry").getChild("location").getChildTextTrim("lat");
> >             String lon =
> >
> root.getChild("result").getChild("geometry").getChild("location").getChildTextTrim("lng");
> >             return Location.fromString(lat + ";" + lon);
> >         } catch (Exception ex) {
> >             return null;
> >         }
> >     }
> >
> > ________________________________________
> > From: Dan Haywood [[email protected]]
> > Sent: Wednesday, January 23, 2013 9:54 AM
> > To: [email protected]
> > Subject: Re: isis compile from source, gmaps2 widget?
> >
> > Just picking up on this thread....
> >
> > I've been doing some work to resurrect the gmaps widget, and now have it
> > going.
> >
> > It does depend on a SNAPSHOT version of wicketstuff-gmap3, so can't be
> made
> > part of Isis proper yet.
> >
> > However, I have created a github repo which explains how to configure it
> > [1] (with some pretty screenshots).
> >
> > Also, this needed some updates to wicket viewer itself, so you'll need to
> > build Isis from source to try it out.
> >
> > (Jeroen: the fixes I've done here might've sorted out our calendar view,
> >  but I haven't tested it yet).
> >
> > Dan
> >
> >
> > [1] https://github.com/danhaywood/isis-wicket-gmap3
> >
>

Reply via email to