<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>avameo &#187; APIs</title>
	<atom:link href="http://www.avameo.de/index.php/category/techtalk/sl-techtalk/apis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.avameo.de</link>
	<description>by Patrick Wunderland</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:49:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Second Life öffnet sicher weiter</title>
		<link>http://www.avameo.de/index.php/2009/07/14/second-life-offnet-sicher-weiter/</link>
		<comments>http://www.avameo.de/index.php/2009/07/14/second-life-offnet-sicher-weiter/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 19:37:05 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[LSL Tutorials]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Linden Scripting Language]]></category>
		<category><![CDATA[Metriken]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[Techtalk]]></category>

		<guid isPermaLink="false">http://www.avameo.de/?p=6675</guid>
		<description><![CDATA[Während Linden Lab die HTML on a Prim-Diskussion offensichtlich verschläft und weiterhin unklar ist, inwiefern sich das Second-Life GRID künftig öffnet wird und am HyperGRID partizipieren wird, vereinfacht Linden Lab nun die Schnittstelle, um von außen an InWorld-Objekt zu gelangen. Über ein Tweet von Andreas Romppel bin ich auf den WebMetrics-Guru Marshall Sponder aufmerksam geworden. [...]]]></description>
			<content:encoded><![CDATA[<p>Während Linden Lab die <a href="http://www.avameo.de/?s=html+on+a+prim">HTML on a Prim</a>-Diskussion offensichtlich verschläft und weiterhin unklar ist, inwiefern sich das Second-Life GRID künftig öffnet wird und am HyperGRID partizipieren wird, vereinfacht Linden Lab nun die Schnittstelle, um von außen an InWorld-Objekt zu gelangen.</p>

<p>Über ein Tweet von Andreas Romppel bin ich auf den WebMetrics-Guru <a href="http://www.webmetricsguru.com/archives/2009/07/exciting-developments-in-virtual-world-tracking-and-analytics/" target="_blank">Marshall Sponder</a> aufmerksam geworden. Sponder beschäftigt sich bereits seit 2007 mit <a href="http://www.webmetricsguru.com/wp-content/uploads/2009/07/ibm-vbc-metrics_2007_ytdt.pdf" target="_blank">Metriken</a> für Virtuelle Welten. Offensichtlich hat Sponder ein vergleichbares Produkt zu unserer Kennzahlenerhebung, die wir mittels unseren <a href="http://www.sltalk-partner.de/?q=node/8" target="_blank">Landscanners</a> erheben und auswerten.</p>

<p>Das Ganze nennt sich <a href="https://blogs.secondlife.com/community/technology/blog/2009/07/07/http-in-and-lsl-communications" target="_blank">HTTP In and LSL Communications</a> und vereinfacht die Kommunikation mit InWorld-Objekten von außen erheblich. Bisher war dies nur mit einem sehr "krückenhaften" XML-RPC-Call möglich, wie wir dies im Februar 2007 in unserem <a href="http://www.avameo.de/index.php/2007/02/03/techtalk-4/">TechTalk</a> demonstrierten. Details für die aktuelle Ansteuerung von InWorld-Objekten mittels der UUID findet man in diesem <a href="http://wiki.secondlife.com/wiki/LSL_http_server/examples" target="_blank">Wiki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2009/07/14/second-life-offnet-sicher-weiter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3D-Internet-Standards: Google mischt mit</title>
		<link>http://www.avameo.de/index.php/2009/04/22/3d-internet-standards-google-mischt-mit/</link>
		<comments>http://www.avameo.de/index.php/2009/04/22/3d-internet-standards-google-mischt-mit/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 14:37:32 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[O3D]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://www.avameo.de/?p=5488</guid>
		<description><![CDATA[Über Nicolas Dorwig bin ich gerade auf die Aktivitäten von Google im Bereich 3D-Unterstützung für Browser aufmerksam geworden (siehe auch auf Golem). O3D heißt das neue Wunderkind, ein Browser-PlugIn, welches eine shader-basierte Low-Level-API bereitstellt. Hier ein Video dazu: Weitere Links: O3D-API Metaversability]]></description>
			<content:encoded><![CDATA[<p>Über <a href="http://www.twitter.com/noiz1709
" target="_blank">Nicolas Dorwig</a> bin ich gerade auf die Aktivitäten von Google im Bereich 3D-Unterstützung für Browser aufmerksam geworden (siehe auch auf <a href="http://www.golem.de/0904/66622.html" target="_blank">Golem</a>). O3D heißt das neue Wunderkind, ein Browser-PlugIn, welches eine <a href="http://www.googlewatchblog.de/2009/04/22/plugin-o3d-macht-browser-3d-faehig/" target="_blank">shader-basierte</a> Low-Level-API bereitstellt.</p>

<p>Hier ein Video dazu:</p>

<center>
<object width="480" ><param name="movie" value="http://www.youtube.com/v/uofWfXOzX-g&#038;hl=de&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/uofWfXOzX-g&#038;hl=de&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480"></embed></object>
</center>


<p>Weitere Links:</p>

<ol>
<li><a href="http://code.google.com/intl/de-DE/apis/o3d/">O3D-API</a></li>
<li><a href="http://consiliera.blogspot.com/2009/04/web3d-google-bringt-3d-in-den-web.html" target="_blank">Metaversability</a>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2009/04/22/3d-internet-standards-google-mischt-mit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IETF diskutiert Standards für Avatare</title>
		<link>http://www.avameo.de/index.php/2009/04/05/ietf-diskutiert-standards-fur-avatar/</link>
		<comments>http://www.avameo.de/index.php/2009/04/05/ietf-diskutiert-standards-fur-avatar/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 07:40:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Innovationen]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Avatar]]></category>
		<category><![CDATA[Canvas3D]]></category>
		<category><![CDATA[IETF]]></category>
		<category><![CDATA[Java3D]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenSimulator]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[VRML]]></category>
		<category><![CDATA[X3D]]></category>

		<guid isPermaLink="false">http://www.avameo.de/?p=5287</guid>
		<description><![CDATA[Im März trafen sich einige wichtige Meinungsmacher auf einer Konferenz der Internet Engineering Task (IETF) Force in San Fransisco. Top Thema war die Harmonisierung evtl. Standards und die Interoperabilität zwischen verschiedenen Metaversen wie Second Life und World of Warcraft. Der heise-Bericht vom 29.03.2009 liest sich allerdings, als ob verschiedene Vertreter mit grundsätzlich unterschiedlichen Anforderungen und [...]]]></description>
			<content:encoded><![CDATA[<p>Im März trafen sich einige wichtige Meinungsmacher auf einer Konferenz der Internet Engineering Task (<a href="http://www.ietf.org" target="_blank">IETF</a>) Force in San Fransisco. Top Thema war die Harmonisierung evtl. Standards und die Interoperabilität zwischen verschiedenen Metaversen wie Second Life und World of Warcraft.</p>

<p>Der <a href="http://www.heise.de/newsticker/Betreiber-von-Online-Plattformen-wollen-IETF-Standard-fuer-Avatare--/meldung/135380" target="_blank">heise-Bericht</a> vom 29.03.2009 liest sich allerdings, als ob verschiedene Vertreter mit grundsätzlich unterschiedlichen Anforderungen und Zielen an die Sache gehen.</p>

<p>Kein Wunder, denn das Unterfangen, Second Life, Word of Warcraft und Weblin unter einen "Hut" zu bringen erscheint mir schier unmöglich.</p>

<p>Parallel zu den agilen Internet-Machern, den Betreibern der Plattformen wie Second Life, World of War und Weblin, mischen sich die schwergewichtigen und trägen Strategen in das Spiel ein, wie wir am <a href="http://www.avameo.de/index.php/2009/03/27/der-kampf-um-die-3d-standards/" target="_blank">27. März</a> berichteten. Hier geht es dann um die Protokolle und Formate wie Canvas3D, Java3D, OpenCL, OpenGL, VRML, X3D.</p>

<p>Natürlich sind diese Diskussionen längst überfällig. Zudem sind Machtspielereien und Angst vor Kontrollverlusten der Diskussionen nicht förderlich.</p> 

<p>Dabei hat voraussichtlich der OpenSimulator mit dem <a href="http://tools.ietf.org/html/draft-hamrick-ogp-auth-00" target="_blank">OpenGrid-Protokoll</a> gute Chancen, obschon <a href="http://comlounge.net/de/" target="_blank">Christian Scholz</a> auf eine Liste der <a href="http://tools.ietf.org/html/draft-cscholz-mmox-architecture-00" target="_blank">Einzelprobleme</a> aufmerksam machte, die einen einzelenen Standard als unrealistisch erscheinen lassen.</p>

<p>In einer Welt mit stark anwachsender Komplexität wird die Kontrolle immer schwieriger, gezielte und gesteuerte Entscheidungen immer unwahrscheinlicher aufgrund unterschiedlicher Interessen und Meinungen. </p>

<p>Es stellt sich die Frage inwiefern die <a href="http://www.ietf.org" target="_blank">IETF</a> oder das <a href="http://www.w3c.org" target="_blank">W3C</a> bei den schnellen Entwicklungen tatsächlich positiv mitwirken können? Ich sehe hier eher emergente, sich selbst entwickelnde Strukturen, die globale und gute Defacto-Standards prägen auf Basis von OpenSource-Lösungen und hochmotivierten Individuen die im Netz effektiv und effizient zusammenarbeiten.</p>]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2009/04/05/ietf-diskutiert-standards-fur-avatar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Registrierung vereinfacht</title>
		<link>http://www.avameo.de/index.php/2007/10/10/registrierung-vereinfacht/</link>
		<comments>http://www.avameo.de/index.php/2007/10/10/registrierung-vereinfacht/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 09:08:40 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[allgemein]]></category>
		<category><![CDATA[avameo]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[GRID]]></category>
		<category><![CDATA[linden lab]]></category>
		<category><![CDATA[Pioniere]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Uni]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.avameo.de/index.php/2007/10/10/registrierung-vereinfacht/</guid>
		<description><![CDATA[Der Geburtsort von Second Life&#174; konnte ja schon seit langem über die Registration API festgelegt werden. Damit ist es quasi möglich, relativ einfach den "SL-Geburtsort" eines Resident zu beeinflussen, um somit einfach eine Community aufzubauen. Ist man quasi von Seiten Linden Lab&#174; in Second Life&#174; eingestiegen, war der bevorzugte Geburtsort Orientation Island, die man bekanntlich [...]]]></description>
			<content:encoded><![CDATA[<img border="0" align="left" vspace="8" hspace="8" id="image1243" src="http://www.avameo.de/wp-content/uploads/2007/10/registration.jpg" alt="Geburtsort Second Life&reg;" /><p>Der Geburtsort von Second Life&reg; konnte ja schon seit langem über die <a href="http://secondlifegrid.net/programs/api/reg" target="_blank">Registration API</a> festgelegt werden. Damit ist es quasi möglich, relativ einfach den "SL-Geburtsort" eines Resident zu beeinflussen, um somit einfach eine Community aufzubauen.</p>

<p>Ist man quasi von Seiten Linden Lab&reg; in Second Life&reg; eingestiegen, war der bevorzugte Geburtsort Orientation Island, die man bekanntlich nur  einmal besuchen kann.</p>

<p>Da ich für einen Second Life&reg;-Kurs gerade ein Tutorial erstelle habe ich mir noch einmal die aktuelle Registrierungs-Prozedur angeschaut. Dabei habe ich gesehen, das sich hier einiges geändert hat.</p> 

<p>Ab sofort werden von Linden Lab&reg; auch auf der <a href="https://secure-web4.secondlife.com/join/" target="_blank">Second Life&reg;-Seite</a> "fremde" Communities unterstützt.<span id="more-1244"></span></p>

<p>Wie man sieht arbeitet hier Linden Lab&reg; auch daran, den Einstieg in Second Life&reg; bequemer und einfacher zu gestalten</p>]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2007/10/10/registrierung-vereinfacht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechTalk #5 &#8211; Webmap API Guide &#8211; HowTo</title>
		<link>http://www.avameo.de/index.php/2007/06/01/webmap-api-guide-howto/</link>
		<comments>http://www.avameo.de/index.php/2007/06/01/webmap-api-guide-howto/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 14:32:12 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[avameo]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Ethik]]></category>
		<category><![CDATA[EU]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[KybernEthik]]></category>
		<category><![CDATA[KybernEthik 1]]></category>
		<category><![CDATA[linden lab]]></category>
		<category><![CDATA[Patrick]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pioniere]]></category>
		<category><![CDATA[Recht]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[SLM]]></category>
		<category><![CDATA[Tanz]]></category>
		<category><![CDATA[Techtalk]]></category>
		<category><![CDATA[Teleport]]></category>
		<category><![CDATA[Ton]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.avameo.de/index.php/2007/06/01/webmap-api-guide-howto/</guid>
		<description><![CDATA[Hallo, liebe TechTalk-Leser. Heute stellen wir Euch die WebMap-API von Linden Lab&#174; vor. BETA, was sonst. Und deshalb vorneweg. Mit dem Internet Explorer inder der version 7 könnt ihr es direkt vergessen. Richtig! Firefox auspacken oder IE 5 ging bei mir. IE 6 ist laut Dokumentation ebenfalls getestet! Was kann man mit der WebMapAPI machen? [...]]]></description>
			<content:encoded><![CDATA[<img id="image775" vspace="8" hspace="8" align="left" src="http://www.avameo.de/wp-content/uploads/2007/06/kybernethikmap.jpg" alt="WebMapAPI" />Hallo, liebe TechTalk-Leser. Heute stellen wir Euch die WebMap-API von Linden Lab&reg; vor. BETA, was sonst. Und deshalb vorneweg. Mit dem Internet Explorer inder der version 7 könnt ihr es direkt vergessen. Richtig! Firefox auspacken oder IE 5 ging bei mir. IE 6 ist laut Dokumentation ebenfalls getestet! Was kann man mit der WebMapAPI machen? Also links im Bild sehr ihr die KybernEthik 1 von oben. Also die Map, welche ihr auch mit dem SL-Client seht. Diese Funktionalität lässt sich relativ einfach in beliebige Webseiten und Webanwendungen einbauen. Dies geschieht mit einer JavaScript-API. Und genau um die soll es in diesem Mini-TechTalk gehen! Wozu man das benutzen kann? Gaaanz einfach! Nehmen wir zum Beispiel den <a href="http://www.sltalk-partner.com/?q=node/8" target="_blank">Landscanner</a> von SLTalk &amp; Partner. Das ist ein Scanner, den der SIM-Owner überall auf seinem SIM aufstellen kann, beliebig viele. Über ein komfortables Web-Frontend kann der Betreiber einer SIM alle möglichen Daten abrufen<span id="more-774"></span>, zum Beispiel wie die Besucherfrequenzen seiner SIM sind oder die durchschnittliche Verweildauer bis hin, wie sich die SIM-Performance in einem bestimmten Zeitraum verhalten hat. Über das Web-Frontend kann man nun die Karte der SIM mittels der JavaScript-API anzeigen und sogar Marker setzen, wo die ganzen Scanner stehen, damit er sie schnell findet. Er kann sich sogar über diese Map direkt dorthin teleportieren. Praktisch oder? Aber schauen wir uns das Ganze einmal wie in gewohnter SL-techTalk-Tiefe an <img src='http://www.avameo.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Haaaaands on!

Die folgenden drei Knöpfe sind JavaScript gesteuert. Möglicherweise dauert es einige Sekunden, bis ihr die Buttons sehen könnt, da die JavaScript-API und einige Daten von den Linden Lab-Servern geladen werden müssen.
<script src="http://secondlife.com/apps/mapapi/" type="text/javascript"></script> 

<script>
function showMap()
{
var options = new Array()
options['hasPanningControls'] = false;
mapInstance = new SLMap(document.getElementById('map-container'), options);
mapInstance.centerAndZoomAtSLCoord(new SLPoint('KybernEthik 1',128,128),0);
mapInstance.zoomIn();
}
</script>
<script>
function showCentrum()
{
if ( (typeof mapInstance) != "undefined") 
{
var options = new Array()
options['width'] = 220;
options['height'] = 220;

var mapWindow = new MapWindow("<img src='http://www.avameo.de/wp-content/uploads/2007/06/zentrum_map.jpg'/>",options);
mapInstance.addMapWindow(mapWindow,new SLPoint('KybernEthik 1',128,128));
}
else
{
alert("Bitte erst auf Karte anzeigen klicken");
}

}
</script>
<script>
function setMark()
{
if ( (typeof mapInstance) != "undefined") 
{
var yellow_dot_image = new Img("http://www.secondlife.com/developers/mapapi/b_map_yellow.gif",30,30);
var yellow_icon = new Icon(yellow_dot_image);
var all_images = [yellow_icon, yellow_icon, yellow_icon, yellow_icon, yellow_icon, yellow_icon];

var marker = new Marker(all_images, new XYPoint(128,128));
var marker = new Marker(all_images, new SLPoint('KybernEthik 1',128,128));

mapInstance.addMarker(marker);
}
else
{
alert("Bitte erst auf Karte anzeigen klicken");
}

}

</script>


<center>
<div id="map-container"></div>
</center>

<center>

<form name="Kartensteuerung">
<input type="button" value="Karte anzeigen" onClick="javascript:showMap()"/>
<input type="button" value="Zentrum zeigen" onClick="javascript:showCentrum()"/>
<input type="button" value="Marker setzen" onClick="javascript:setMark()"/>
</form>
</center>
Nachdem ihr Euch ein wenig vertraut gemacht habt, was die API liefern kann, möchte ich jetzt ein wenig technischer werden. Zunächst muss die JavaScript-API in die HTML-Seite eingebettet werden. Dies geht so:

<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Einbinden der WebMap API</span></div>
<div class="text"><span class="text-text">
Nachfolgender Code lädt die API in Form eines Javascript-Include ein.  </span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
&lt;script src="http://secondlife.com/apps/mapapi/" 
type="text/javascript"&gt;&lt;/script&gt;
</pre>
</div>
<div class="annotation"><span class="annotation-number">JavaScript WebMap API</span></div>
</div>
</div>
Für die harten JavaScript-Hacker unter Euch, hier der <a href="http://www.avameo.de/wp-content/uploads/2007/06/mapapi.js" target="_blank">Link</a> zur API. Aber ehrlich gesagt ist JavaScript eigentlich nicht so mein Ding.

Soweit so gut. Die API haben wir. Jetzt müssen wir nur noch eine Map erzeugen, und das geht so:

<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Erzeugen einer Map mit JavaScript-Aufrufen</span></div>
<div class="text"><span class="text-text">
Nachfolgender Code erzeugt eine Instanz der Klasse SLMap, sofern man bei JavaScript objektorientierte Begriffe nutzt <img src='http://www.avameo.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   Die Hashmap options benutze ich, um die Scrollbuttons auszuschalten, insgesamt kann man hier noch weitere Parameter angeben. Die JavaScript-Instanz wird über den DOM an ein DIV-Element map-container gebunden, welches ich im nächsten Schritt anspreche. Über die Klasse SLPoint definiert Ihr den Kartenausschnitt innerhalb Second Life&reg; !</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">

var options = new Array()
options['hasPanningControls'] = false;
mapInstance = new SLMap(
document.getElementById('map-container'), options);
mapInstance.centerAndZoomAtSLCoord(
new SLPoint('KybernEthik 1',128,128),0);

</pre>
</div>
<div class="annotation"><span class="annotation-number">JavaScript WebMap API</span></div>
</div>
</div>
Die meisten Anwender wrappen diesen Code in eine JavaScript-Funktion createMap() und rufen diese Funktion über das onload()-Event des HTML-Body-Tags auf. Ich habe diesen Code auf einen Button gelegt, deshalb müsst ihr auch erst einmal den Button klicken, bevor eine Karte erscheint. Kommen wir zu dem HTML-Div-Element. Über dieses Element wird definiert, wo auf eurer HTML-Seite die Map erscheinen soll:

<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Div-Container für die Positionierung der Mal</span></div>
<div class="text"><span class="text-text">
Das ist recht easy. Über einen Style im CSS könnt ihr dieses Div-Element auch nich etwas stylen bzw. sizen. Das zeige ich Euch im nächsten Schritt.
</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
&lt;div id="map-container"&gt;&lt;/div&gt;
</pre>
</div>
<div class="annotation"><span class="annotation-number">Div-Container für die Map</span></div>
</div>
</div>
Wie bereits erwähnt, hier noch der Style für den Map-Container. Entweder passt ihr dies im CSS an oder direkt in eurer HTML-Seite.
<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Div-Container im CSS stylen</span></div>
<div class="text"><span class="text-text">
So sieht mein Abschnitt für den Map-Container in meinem CSS aus.</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
div#map-container {
      width: 450px;
      height: 450px;
}
</pre>
</div>
<div class="annotation"><span class="annotation-number">Div-Container für die Map stylen und sizen</span></div>
</div>
</div>
Wenn ihr erstmal eine Map habt, könnt ihr viele tolle Dinge tun (Schaut Euch die <a href="http://secondlife.com/developers/mapapi/api-ref.html" target="_blank">API-Reference</a> hierzu im Detail an). Ihr könnt mit der API beliebige Grafiken an bestimmten Positionen legen, um z.B. etwas zu markieren oder Ihr könnt ein Infofenster mit einer Grafik der Region anzeigen. Hier mein Code, der ausgeführt wird, wenn Ihr auf den Button "Zentrum zeigen" klickt.
<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Hinzufügen eines MapWindows zu einer mapInstance</span></div>
<div class="text"><span class="text-text">
So könnt ihr der Instanz der Klasse SLMap ein MapWindow hinzufügen. Beachtet, dass ich auch hier wieder eine JavaScript Hashmap verwende, um das Window nach meinen Bedürfnissen zu sizen. Dem Konstruktor der Klasse MapWindow könnt ihr beliebiges HTML übergeben. Escapen nicht vergessen !!!!</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
var options = new Array()
options['width'] = 220;
options['height'] = 220;
var mapWindow = new MapWindow("
&lt;img src='http://www.avameo.de/wp-content/uploads/2007/06/
zentrum_map.jpg'/&gt;",options);
mapInstance.addMapWindow(mapWindow,
new SLPoint('KybernEthik 1',128,128));
</pre>
</div>
<div class="annotation"><span class="annotation-number">Erzeugen und positionieren eines Markers in der SLMap.</span></div>
</div>
</div>
So nun geht es zum Endspurt. Das Tagging bzw. das setzen von Markern. Wozu das gut sein soll? Na dann schaut mal bei <a href="http://www.sloog.org/" target="_blank">Sloog - tagging the whole new world<a/> rein. Oder, wie bereits erwähnt, so ein Web-Frontend für die Administration von <a href="http://www.sltalk-partner.de/?q=node/8" target="_blank">Landscannern</a> ist ebenfalls solch ein Anwendungsbeispiel.

<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Hinzufügen eines MapWindows zu einer mapInstance</span></div>
<div class="text"><span class="text-text">Zunächst wird eine Grafik auf eurem Webserver an eine  JavaScript-Klasse Img gebunden. Dann bastelt ihr daraus ein Icon. Und dann baut ihr ein Array auf. Dann wird einfach noch eine Instanz der Klasse Marker erzeugt, natürlich mit den Icons und einer SL-Position unter Verwendung der Klasse SLPoint. Und dann nur noch mit der Methode addMarker der SLMap hinzufügen. Simpel, oder?
</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
var yellow_dot_image = 
new Img("http://hier_die_bild_url.xy/b_map_yellow.gif",30,30);
var yellow_icon = new Icon(yellow_dot_image);

var all_images = 
[yellow_icon, yellow_icon, yellow_icon, 
yellow_icon, yellow_icon, yellow_icon];

var marker = new Marker(all_images, 
new SLPoint('KybernEthik 1',128,128));

mapInstance.addMarker(marker);
</pre>
</div>
<div class="annotation"><span class="annotation-number">Erzeugen und setzen eines Markers in der SLMap.</span></div>
</div>
</div>
So Leute das war's erstmal. Der Patrick muss jetzt noch ne Tomcat-Schulung vorbereiten und sich deshalb hier mal vom WordPress-Acker verabschieden. TschüSS und bis zum nächsten Mal.<br/>

Achja, bevor ich es vergesse, hier zum Schluß der allerwichtigste Link zu diesem Thema:

Link zur WebMap-API: <a href="http://secondlife.com/developers/mapapi/" target="_blank">http://secondlife.com/developers/mapapi/"</a>

]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2007/06/01/webmap-api-guide-howto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java WIMS- und RPC-API von SLTalk &amp; Partner</title>
		<link>http://www.avameo.de/index.php/2007/03/25/java-wims-und-rpc-api-von-avameo-partner/</link>
		<comments>http://www.avameo.de/index.php/2007/03/25/java-wims-und-rpc-api-von-avameo-partner/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 17:49:32 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[avameo]]></category>
		<category><![CDATA[Avatar]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Ethik]]></category>
		<category><![CDATA[EU]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Here]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[KybernEthik]]></category>
		<category><![CDATA[KybernEthik 1]]></category>
		<category><![CDATA[linden lab]]></category>
		<category><![CDATA[Linden Scripting Language]]></category>
		<category><![CDATA[Patrick]]></category>
		<category><![CDATA[Pioniere]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Recht]]></category>
		<category><![CDATA[Second Life]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Techtalk]]></category>
		<category><![CDATA[TV]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.avameo.de/index.php/2007/03/25/java-wims-und-rpc-api-von-avameo-partner/</guid>
		<description><![CDATA[Wer anspruchsvolle Projekte in Second Life&#174; umsetzen möchte, merkt schnell, dass eine Komponente wie ein Business-Server erforderlich wird. Insbesondere in Projekten im kommerziellen Umfeld, bei denen es um mehr geht als die einfache Darstellung von 3D-Modellen. Hier geht es oftmals darum Gewinnspiele zu managen, Alterskontrollen zu realisieren, Transaktionen entlang einer Wertschöpfungskette zu steuern und zu [...]]]></description>
			<content:encoded><![CDATA[<img id="image424" align="left" vspace="8" hspace="8" alt="WIMS API" src="http://www.avameo.de/wp-content/uploads/2007/03/wims_api.jpg" />Wer anspruchsvolle Projekte in Second Life&reg; umsetzen möchte, merkt schnell, dass eine Komponente wie ein Business-Server erforderlich wird. Insbesondere in Projekten im kommerziellen Umfeld, bei denen es um mehr geht als die einfache Darstellung von 3D-Modellen. Hier geht es oftmals darum Gewinnspiele zu managen, Alterskontrollen zu realisieren, Transaktionen entlang einer Wertschöpfungskette zu steuern und zu monitoren oder sonstige Businesskomponenten auszulagern. Mit der InWorld-Sprache LSL kommt man nicht unbedingt weiter. LSL ist auf ca. 320 Build-In-Funktionen beschränkt, komplexere Datenstrukturen, Modularisierung und andere Standardkonzepte sind nicht möglich. <span id="more-425"></span>Hier verliert man schnell den Überblick, wenn es um anspruchsvollere Anwendungen geht. Linden Lab&reg; hat Second Life&reg; glücklicherweise über das HTTP-Protokoll nach außen geöffnet. Von außen nach innen gelangt man über XML-RPCs. Somit ist schon einmal die Grundlage geschaffen, damit man geschäftsprozessübergreifende Komponenten nach außen verlagern kann. Und in der Tat empfehlen wir jedem, der anspruchsvollere Anwendungen realisieren möchte, die Businesslogik auf einen eigenen Business-Server auszulagern. 

SLTalk &amp; Partner implementiert im Rahmen der Projekte Standardkonzepte und generische Frameworks, sodaß ein hohes Maß an Wiederverwertbarkeit und schnellere Projektlaufzeiten ermöglicht werden. Ein Resultat unserer Arbeit ist eine API, die es ermöglicht von einem Java-Business-Server XML-RPCs InWorld aufzurufen. 

Die API wird als Java-Archiv ausgeliefert und ist mit knapp 170 KB recht schlank. Bestandteil des JARs sind die XML-RPC-Klassen der Apache-Foundation sowie die Wrapper-Klassen von uns.
<div>

<table border="0" >

<tr width="450px" bgcolor="orange">

<td style="color:#000000">Klasse</td><td style="color:#000000">Beschreibung</td>

</tr>

<tr bgcolor="gray">
<td style="color:#000000">WIMDDemo.java</td><td style="color:#000000">Ist eine Demo für einen WIMS-Java-Client und ruft unseren WIMS-Service auf Kybernethik 1 auf.</td> 
</tr>
<tr bgcolor="darkgray">
<td style="color:#000000">RPCDemo.java</td><td style="color:#000000"> Ist die etwas mehr generischere Version und ermöglicht es jeglichen XML-RPC-Server in Second Life&reg; aufzurufen.</td>
</tr>

<tr bgcolor="gray">
<td style="color:#000000">avameo.jar</td><td style="color:#000000">Enthält die notwendigen XML-RPC-Klassen der Apache Foundation sowie die nachfolgenden Wrapper-Klassen von SLTalk &amp; Partner</td> 
</tr>

<tr bgcolor="darkgray">
<td style="color:#000000">de.avameo.rpc.client.RPCClient</td><td style="color:#000000">Mit dieser Klasse lassen sich mit Leichtigkeit beliebige XML-RPC-Clients realisieren, welche InWorld-XML-RPC-Server aufrufen</td>
</tr>

<tr bgcolor="gray">
<td style="color:#000000">de.avameo.rpc.client.RPCClientFactory</td><td style="color:#000000">Diese Klasse implementiert das Factory-Pattern, um einen RPCClient für einen bestimmten Channel zu erzeugen</td>
</tr>

<tr bgcolor="darkgray">
<td style="color:#000000">de.avameo.rpc.wims.WIMSClient</td><td style="color:#000000">Ist ein spezieller Client, welcher unseren WIMS-Servive auf Kybernethik 1 ansteuert. Mit diesem Java-Client kann man von außerhalb Second Life&reg; Instant Messages an Residents schicken.</td>
</tr>

<tr bgcolor="gray">
<td style="color:#000000">de.avameo.rpc.common.Key</td><td style="color:#000000">Diese Klasse repräsentiert eine Second Life&reg; UUID und lässt nur gültige UUID-Keys zu.</td>
</tr>

<tr bgcolor="darkgray">
<td style="color:#000000">de.avameo.rpc.common.InvalidUUIDKeyException</td><td style="color:#000000">Diese Exception wird von der Klasse Key geworfen, wenn mit einem String keine gültuge SL-UUID erzeugt werden kann.</td>
</tr>

</table>

</div>

Es wurde bewußt darauf geachtet, die API möglichst schlank zu halten, um die Anwendung für den Entwickler so einfach wie möglich zu gestalten. In diesem Beitrag stelle ich daher unseren generischen SL-XML-RPC-Client vor und eine spezielle Implementierung dieser API, die unseren kostenlosen <a href="http://www.avameo.de/index.php/2007/03/23/heute-schon-gewimst/">WIMS-Service</a> auf KybernEthik 1 ansteuert. Eine WIMS (Web Instant Message 2 Secondlife) lässt sich aus dem Java-Kontext in nur drei Zeilen programmieren. Jeder beliebige andere XML-RPC-Dienst lässt sich über den etwas generischeren Client mit 6 Aufrufen realisieren. 


Beide Möglichkeiten möchte ich folgend erläutern.

<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Erzeugen eines WIMS-Clients</span></div>
<div class="text"><span class="text-text">
WIMSDemo.java erzeugt einen AvatarKey und versendet eine WIMS, nachdem ein WIMSClient erzeugt wurde</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
import de.avameo.wims.WIMSClient;
import de.avameo.common.Key;

public class WIMSDemo
{
  public static void main(String argv[])
  {
     WIMSClient client = WIMSClient.getInstance();
       try
       {
          Key avatarKey = 
          new Key("b3e9197e-9dc5-45ee-9029-d45de3742944");
          client.sendWIMS(avatarKey, "DemoNachricht");
       }
       catch(Exception e)
      {
         e.printStackTrace();
      }
    }
}



</pre>
</div>
<div class="annotation"><span style="font-size:100%; color:#000000; class="annotation-number">WIMSDemo.java</span></div>
</div>
</div>
Einfach oder? Mit nur drei Zeilen Java-Code. Die etwas allgemeinere Methode sieht wie folgt aus:


<div class="example">
<div class="contentBlockSubElement"><span class="example-ex">Erzeugen eines WIMS-Clients</span></div>
<div class="text"><span class="text-text">
RPCDemo.java erzeugt einen AvatarKey, an den die WIMS geschickt wird. Außerdem erzeugt die Klasse einen Key fuer den Channel, unter dem unser WIMS-Service erreichbar ist. Anschließend wird ein RPC-Client über die RPCClientFactory erzeugt und der Integer-Wert sowie der String-Wert gesetzt, die an den RPC-Channel übertragen werden.


</span></div>
<div class="notTextBlock">
<div class="sourcecode">
<pre class="sourcecode-sourcecode">
import de.avameo.wims.WIMSClient;
import de.avameo.common.Key;

import de.avameo.rpc.client.RPCClientFactory;
import de.avameo.rpc.client.RPCClient;
import de.avameo.common.Key;
import java.util.HashMap;

public class RPCDemo
{
 public static void main(String argv[])
 {
    Key channelKey = null;
    Key avatarKey  = null;
    RPCClientFactory factory = RPCClientFactory.getInstance();

    try
    {
      // UUID SLTalk &amp; Partner WIMSServer
      channelKey = 
      new Key("f3637e68-759b-8819-5df9-94a889dc69ff"); 


      // UUID Patrick Wunderland
      avatarKey  = 
      new Key("b3e9197e-9dc5-45ee-9029-d45de3742944"); 
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    RPCClient client = factory.createClient(channelKey);

    client.setIntVal(0);
    client.setStringValue(
    avatarKey.getUUIDString()+"Dies ist eine TestNachricht ");
    HashMap result = client.executeRPCCall();
    System.out.println("Result="+result);
    }
}
</pre>
</div>
<div class="annotation"><span style="font-size:100%; color:#000000; class="annotation-number">RPCDemo.java</span></div>
</div>
</div>

Voilá, das war`s Mal wieder vom TechTalk. Euer Patrick Wunderland auf www.avameo.de <img src='http://www.avameo.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Achja, bevor ich es vergesse! Hier die Downloads:
<table>
<tr width="450px" bgcolor="orange">

<td style="color:#000000">Datei</td><td style="color:#000000">Beschreibung</td>

</tr>

<tr bgcolor="gray">
<td style="color:#000000"><a style="color:#000000" href="http://www.avameo.de/wp-content/uploads/2007/03/WIMSDemo.java">WIMSDemo.java</a></td><td style="color:#000000">Ist eine Demo für einen WIMS-Java-Client und ruft unseren WIMS-Service auf Kybernethik 1 auf.</td> 
</tr>
<tr bgcolor="darkgray">
<td style="color:#000000"><a style="color:#000000" href="http://www.avameo.de/wp-content/uploads/2007/03/RPCDemo.java">RPCDemo.java</a></td><td style="color:#000000"> Ist die etwas mehr generischere Version und ermöglicht es jeglichen XML-RPC-Server in Second Life&reg; aufzurufen.</td>
</tr>

<tr bgcolor="gray">
<td ><a style="color:#000000" href="http://www.avameo.de/wp-content/uploads/2007/03/avameo.jar">avameo.jar</a></td><td style="color:#000000">Enthält die notwendigen XML-RPC-Klassen der Apache Foundation sowie die nachfolgenden Wrapper-Klassen von SLTalk &amp; Partner</td> 
</tr>
</table>
Die Sache mit dem CLASSPATH muss ich Euch ja nicht erklären <img src='http://www.avameo.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Wenn ihr wissen wollt, wie man einen InWorld-XML-RPC-Server in SL mit LSL implementiert, dann empfehle ich Euch meinen <a href="http://www.avameo.de/index.php/2007/02/03/techtalk-4/">TechTalk#4</a>.
]]></content:encoded>
			<wfw:commentRss>http://www.avameo.de/index.php/2007/03/25/java-wims-und-rpc-api-von-avameo-partner/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)

Served from: www.avameo.de @ 2010-08-01 03:35:15 -->