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
>