Mit GeoKit Adresse aus Deutschland geocoden?

Hi,
ich habe Freitag und gestern mit dem GeoKit herumgetestet und ein
Tutorial bearbeitet. Dieses beinhaltetet leider nur Adresse aus US, bzw.
aus San Francisco.
Jedesmal wenn ich eine deutsche Adresse zum geocodieren eingegebe,
bekomme ich einen Nil (kein Ergebnis) zurück (auch wenn ich z.B. Munich,
Germany übergebe).
Bei der Google Maps Hilfe habe ich dazu keine Informationen gefunden.
Wie muss ich Adresse aus Deutschland übergeben?

Am 03.02.2008 um 16:31 schrieb Knut L.:

Bei der Google Maps Hilfe habe ich dazu keine Informationen gefunden.
Wie muss ich Adresse aus Deutschland übergeben?

Muß man da nicht eh Länge/Breite angeben ?

Ich habe gerade eine map eingerichtet allerdings via google api.

Gruß


Posted via http://www.ruby-forum.com/.


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Am 03.02.2008 um 16:31 schrieb Knut L.:

Jedesmal wenn ich eine deutsche Adresse zum geocodieren eingegebe,
bekomme ich einen Nil (kein Ergebnis) zurück (auch wenn ich z.B.
Munich,
Germany übergebe).

Ein Codeschnippsel wäre hiflreich.
Ich habe bei mir im Model folgendes stehen:

class Location < ActiveRecord::Base
acts_as_mappable :auto_geocode=>{:error_message=>‘Adresse nicht
gefunden’}
end

tut wunderbar, auch mit deutschen Adressen der Form:
“Straße Hausnummer, Stadt”

was sagen denn die logfiles?

mfg
Matthias_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Am 03.02.2008 um 16:51 schrieb Knut L.:

mein Code (Sandbox Beispiel) lautet:
[…]
server = XMLRPC::Client.new2(‘http://rpc.geocoder.us/service/xmlrpc’)
result = server.call2(‘geocode’, address)

Wenn Du das per XMLRPC machen willst, brauchst Du GeoKit nicht.

Ansonsten probier mal:

include GeoKit::Geocoders
location = GoogleGeocoder.geocode(address)

mfg
Matthias

Hi Matthias, hi Werner,
mein Code (Sandbox Beispiel) lautet:
class SandboxController < ApplicationController
def lookup_geocodes

your list of places. In a real app, this would come from the

database,

and have more robust descriptions

places = [{:address=>‘Munich, Germany’,:description=>‘Center’} ]

#{:address=>‘1401 Valencia St, San Francisco,
CA’,:description=>‘Valencia’},

{:address=>‘501 Cole St, San Francisco, CA’,:description=>‘Cole’},

#{:address=>‘150 Church st, San Francisco, CA’,:description=>‘Church’}
]

this loop will do the geo lookup for each place

places.each_with_index do |place,index|

# get the geocode by calling our own get_geocode(address) method

geocode = get_geocode place[:address]

# geo_code is now a hash with keys :latitude and :longitude

place these values back into our “database” (array of hashes)

place[:latitude]=geocode[:latitude]
place[:longitude]=geocode[:longitude]

end

#place the result in the session so we can use it for display
session[:places] = places

#let the user know the lookup went ok
render :text=> 'Looked up the geocodes for ‘+places.length.to_s+ ’
address and stored the result in the session . . .’
end

def show_google_map

all we’re going to do is loop through the @places array on the page

@places=session[:places]
end

private
def get_geocode(address)
logger.debug 'starting geocoder call for address: '+address

this is where we call the geocoding web service

server = XMLRPC::Client.new2(‘http://rpc.geocoder.us/service/xmlrpc’)
result = server.call2(‘geocode’, address)
logger.debug "Geocode call: "+result.inspect
return {:success=> true, :latitude=> result[1][0][‘lat’],
:longitude=> result[1][0][‘long’]}
end
end

Der Fehler ist (NIL):
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]

Und die Logfiles vom Server steigen in Zeile 49 vom Controller Sandbox
aus:
return {:success=> true, :latitude=> result[1][0][‘lat’],
:longitude=> result[1][0][‘long’]}

Also scheint er mit die Adresse nicht zu finden. Die anderen Adresse,
die ich ausgeklammert habe, findet er ohne Probleme. Auch ein Beispiel
mit Brandenburgerstrasse, Hameln, Germany findet er nicht.

Matthias Aschenbach wrote:

Am 03.02.2008 um 16:51 schrieb Knut L.:

mein Code (Sandbox Beispiel) lautet:
[…]
server = XMLRPC::Client.new2(‘http://rpc.geocoder.us/service/xmlrpc’)
result = server.call2(‘geocode’, address)

Wenn Du das per XMLRPC machen willst, brauchst Du GeoKit nicht.

Ansonsten probier mal:

include GeoKit::Geocoders
location = GoogleGeocoder.geocode(address)

mfg
Matthias

Hallo Matthias,
sorry hatte die Antwort vergessen :(, bzw. hatte ich keine Zeit fürs
Ausprobieren (die Neueröffnung in Adressen in Deutschland mit GeoKIT decodieren? - DE - Ruby-Forum
ist keine Absicht).

Leider verstehe ich deine Änderungen (noch) nicht ganz, bzw. bin mir
nicht bewußt gewesen, dass es zu XMLRPC noch alternativen gibt.
Die Änderungen hatten aber auch kein Erfolg:
include GeoKit::Geocoders habe ich in die class sandbox eingefügt
(oben).
Nur ich weiss nicht, wie ich die Location location =
GoogleGeocoder.geocode(address) anwende. Kann ich die Methode einfach
gegen location = GoogleGeocoder.geocode(address) austauschen?
Wenn ich
return {:success=> true, :latitude=> result[1][0][‘lat’],
:longitude=> result[1][0][‘long’]}
auf
return {:success=> true, :latitude=> location[1][0][‘lat’],
:longitude=> location[1][0][‘long’]}
anpasse bekomme ich

undefined method `[]’ for #GeoKit::GeoLoc:0x47987c8

als Fehler :-/

Mache ich bei der Ãœbergabe etwas falsch?