SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Virtual Earth Integration in Mozilla Firefox

Geprüfte Antwort Dieser Beitrag hat 6 Antworten

Ohne Rang
6 Beiträge
marcel85 erstellt 6 Okt. 2009 17:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe den Code zur Darstellung von Standorten in einer Virtual Earth Map von MVP Michael Greth übernommen und an meine Datenansicht angepasst. Die Landkarte wird mit den Standorten im Internet Explorer korrekt dargestellt, in Mozilla Firefox wird die gesamte Karte allerdings nich im dafür vorgesehenen div-Bereich initialisiert. Weiß jemand, ob Mozilla vielleicht irgendwelche Javascript-Funktionen nicht kennt? Das müsste ja dann eigenlich an der addladEvent-Funktion liegen?!

<script type="text/javascript" src="https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script>  
<script type="text/javascript">
       
   
      var map = null;

      function GetMap()
      {                  
             map = new VEMap('myMap');
            //map.LoadMap(new VELatLong(50.1, 10), 5,'r' ,false);//
            map.LoadMap(new VELatLong(50, 10, 0, VEAltitudeMode.Default), 5, VEMapStyle.Aerial, false, VEMapMode.Mode2D, true, 1);
            AddPins();
      }

      function AddPin(lat, lon, title, desc)
      {
            var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(lat,lon));
            shape.SetTitle(title);
            shape.SetDescription(desc);
            map.AddShape(shape);
      }

      function addLoadEvent(func)
      {
            var oldonload = window.onload;
            if (typeof window.onload != 'function')
            { window.onload = func; }
            else
            { window.onload = function()
                  { oldonload(); func(); }
            }
      }

      addLoadEvent(GetMap);

    </script>
<style>

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2009 10:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dein JavaScript ist leider unvollständig/undurchsichtig. Z.B. wird in GetMap ein Funktion AddPins aufgerufen, die Du nicht dargestellt hast.

Die function addLoadEvent ist IMHO überflüssig. In SharePoint macht man das so:
_spBodyOnLoadFunctionNames.push('GetMap');

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
6 Beiträge
marcel85 Als Antwort am 7 Okt. 2009 12:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

vielen Dank erstmal für deine Antwort! Ich hab due addLoadEvent Function jetzt mal ganz aus dem Code genommen und wie du vorgeschlagen hast ersetzt. Im IE 6 funktionierts nun immer noch ohne Probleme, in Mozilla wird die Karte aber leider immer noch nicht angezeigt. Genau die AddPins Methode habe ich vergessen, die wird im XSL-Template der Datenansicht aufgerufen:

<!-- Generierung der Java Script Methode AddPins-->

<xsl:template name="AddMapPins">
    <xsl:param name="Rows"/>
    <xsl:text disable-output-escaping="yes"><![CDATA[
            <script type="text/javascript">
            function AddPins()
            {
            ]]></xsl:text>
    <xsl:for-each select="$Rows">
      <xsl:if test="not(normalize-space(@Breite) = '' or normalize-space(@Laenge) = '')">
        AddPin(
        <xsl:value-of select="translate(@Breite,',','.')" />,
        <xsl:value-of select="translate(@Laenge,',','.')" />,
        '<xsl:value-of select="@Ort" />',
        '<xsl:value-of select="concat(@PLZ,' ',@Ort,', ',@Land)"/>');
      </xsl:if>
    </xsl:for-each>
    <xsl:text disable-output-escaping="yes"><![CDATA[
            }
            </script>
            ]]></xsl:text>
</xsl:template>

<!-- Aufruf des AddMapPins Templates fr Generierung der Java Script Method AddPins-->

<xsl:call-template name="AddMapPins">
          <xsl:with-param name="Rows" select="$Rows"/>
</xsl:call-template>

 

Die Elemente wurden über CSS positioniert:

<style>
.map {
   position: absolute;
   top: 250;
   left: 10;
   width: 700px;
   height: 640px;
   border:#555555 4px solid;
}
.form1 {
   position: absolute;
   top: 250;
   left: 730px;
   width: 480px;
   height: 640px;
   border:#555555 0px solid;
}
</style>

Hast du vielleicht noch eine Idee an was es liegen könnte?

 

Viele Grüße

Marcel

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2009 12:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nö nicht wirklich eine Idee :-( Hast Du es mal probehalber mit relativer Positionierung versucht? Was ist form1?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
6 Beiträge
marcel85 Als Antwort am 7 Okt. 2009 13:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Form1 ist das Div-Element für die Datenansicht der Standorte, die ebenfalls auf der Oberfläche angezeigt wird. Mit relativer Positionierung hab ichs auch schon probiert, aber leider ohne Erfolg in Mozilla :-(.

 

Viele Grüße

Marcel

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2009 13:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann habe ich leider keine Idee mehr. Ich hatte das schon vor Längerem mal in ein wiederverwendbares Webpart verpackt, das ähnlichen Code erzeugt und dort funktioniert es.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
6 Beiträge
marcel85 Als Antwort am 7 Okt. 2009 19:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok, ich hab den Fehler gefunden. Ich hatte bei der Positionierung des DIV-Tags MyMap ausversehen klein geschrieben. Der IE erkennt das trotzdem, der Firefox offenbar nicht.

Trotzdem vielen Dank für deine Hilfe