Wie von @Henri vermutet, ist das ist ein Expansionsproblem. Offenbar braucht `\getmap` sein Argument expandiert. Das heißt, im Moment sucht `\getmap[file=\Ort]{\Strasse,\Ort,\Land}` nach der Adresse »\\Strasse,\\Ort,\\Land« statt nach »Seehalde 7, Bodman-Ludwigshafen, Deutschland«. Hier lässt sich `\edef` zur Hilfe einsetzen, das sein gesamtes Argument soweit expandiert, wie es eben geht.
Das Prinzip heißt: mit `\edef` ein Hilfsmakro definieren, das den kritischen Aufruf enthält und im Argument mit `\noexpand` diejenigen Teile daran hindern zu expandieren, bei denen es nicht geht/problematisch wäre/unerwünscht ist, und dann das Hilfsmakro aufzurufen:
\edef\x{%
\noexpand\getmap[file=\Ort]{\Strasse,\Ort,\Land}%
}\x
Wenn man verhindern möchte, dass das Hilfsmakro aus Versehen irgendwas überschreibt (was bei `\x` doch eher unwahrscheinlich aber nicht unmöglich ist), kann man die Definition lokal halten, indem man vor dem `\edef` eine Gruppe beginnt und *im* `\edef` wieder schließt. Damit ist nach Aufruf des Hilfsmakros dessen Definition wieder vergessen:
\begingroup
\edef\x{\endgroup
\noexpand\getmap[file=\Ort]{\Strasse,\Ort,\Land}%
}\x
Da Adressen aber Umlaute und scharfes s enthalten können, muss man mit der vollständigen Expansion etwas aufpassen:
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
\edef\x{ß}\show\x
\end{document}
gibt im log:
> \x=macro:
->\OT1\ss .
l.4 \edef\x{ß}\show\x
(mit anderem Font-Encoding ähnlich). Wir können aber mit `etoolbox`' Mitteln leicht verhindern, dass das passiert, indem wir die `datatool`-Variablen *nur einmal* expandieren. (`datatool` lädt `etoolbox` bereits). Das Makro dafür heißt `\expandonce` (für das man nicht wirklich `etoolbox` laden müsste, seine Definition ist `\newcommand\expandonce[1]{\unexpanded\expandafter{#1}}`).
\begingroup
\edef\x{\endgroup
\noexpand\getmap[file=\expandonce\Ort]{%
\expandonce\Strasse,\expandonce\Ort,\expandonce\Land
}%
}\x
Für die `file` Option bietet sich an, anstatt dem Ortsnamen etwas mit `\DTLcurrentindex` zu verwenden (Dank an @esdd für den Hinweis). Der Vorteil: wenn ein Ort mehrmals vorkommt, werden die Dateinamen trotzdem eindeutig.
Ich habe unten `\getmap[file=Karte-\DTLcurrentindex]` verwendet. Damit werden die Dateinamen zwar weniger deskriptiv, sind aber immer noch eindeutig und man vermeidet, dass die Dateinamen aus Versehen Umlaute, Leerzeichen oder dergleichen enthalten, die bei Dateinamen problematisch sein können. Ich habe unten `\getmap[file=Karte-\DTLcurrentindex]` verwendet
können.
Das komplette Beispiel (bei dem ich die seltsamen Einsätze von `\\` entfernt und ggf. durch `\par` ersetzt habe):
% arara: pdflatex: { shell : yes }
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{datatool}
\usepackage[overwrite=true]{getmap}
\usepackage{filecontents}
\begin{filecontents*}{test.csv}
Seehalde 7, Bodman-Ludwigshafen, Deutschland
Alte Potsdamer Straße 7, Berlin, Deutschland
\end{filecontents*}
\begin{document}
\DTLsetseparator{,}
\DTLloaddb[
noheader,
keys={Strasse,Ort,Land}
]{maps}{test.csv}
\DTLforeach*{maps}{\Strasse=Strasse,\Ort=Ort, \Land=Land}{%
\begingroup
\edef\x{\endgroup
\noexpand\getmap[file=Karte-\DTLcurrentindex]{%
\expandonce\Strasse,\expandonce\Ort,\expandonce\Land
}%
}\x
\texttt{\Strasse, \Ort} \par
\includegraphics[width=7.5cm]{Karte-\DTLcurrentindex.png}\par
}
\end{document}
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/getmap-datatool_2.png