Alex's Weblog

Weblog di Ermanno Goletto (Codename Alex - A Learning EXperience)
posts - 438, comments - 4214, trackbacks - 294

My Links

News

Il blog è stato
trasferito al
 seguente link:


DevAdmin Blog

Add my blog to Live

Foto

Curriculum Vitae


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo MCTS

Logo MCSA

Logo MCP

Logo Microsoft Certified Business Management Solutions Professional

Microsoft Certified Business Management Solutions Specialist


Logo UGIdotNET UGIdotNET Contributor


Logo UGISS UGISS Contributor


Logo SysAdmin.it SysAdmin.it Staff


Article Categories

Archives

Post Categories

Blogs

Database

Development

Friends

IT

Knowledge Base

Links

MBS

MCP

MVP Sites

User Groups

Virtualization

Section VirtualEarth per MWPSK (My Web Pages Start Kit)

Mi sono cimentato nella realizzazione di una Sezione per MWPSK che mi permettesse di realizzare la funzionalità "Dove siamo"/"Where we are" presente nella maggior parte siti in modo più dinamico tramite una mappa di Virtual Earth.

La scelta è caduta su una Section perchè rispetto agli Easy Control permettono di avere dei dati di configurazione che possono essere poi salvati anche se l'implementazione di una Section è maggiormente complessa rispetto a quella di un Easy Control. In questo modo però è posiibile dare all'utente la possibilità di configurare la mappa consentendo la possibiltà di inserire latitudine e longitudine del centro mappa, di definire l'altezza della sezione e opzionalmente di definire zoom, rendere fissa la mappa, inserire un Pushpin, impostare la metrica e visualizzare la MiniMap.
Inoltre in questo modo sarà possibile inserire più mappe nel sito e ciò può tornare utile nel caso ad esempio di piccole
attività commerciale con più punti vendita.

Gli Easy Control sono da intersi invece come funzionatà generali senza necessità di configurazione o di persistenza di dati o come funzionalità specifiche del sito, il vantaggio è che la loro implementazione è meno complessa.

Per approfondire le linee guida per implementare Section e Easy Control si faccia riferimento ai seguenti link:
http://www.codeplex.com/MyWebPagesStarterKit/Project/FileDownload.aspx?DownloadId=6942
http://www.codeplex.com/MyWebPagesStarterKit/Project/FileDownload.aspx?DownloadId=15508
http://www.codeplex.com/MyWebPagesStarterKit/Wiki/View.aspx?title=Additional%20components%20and%20examples

Implementare una Section VirtualEarth significa di fatto realizzare un controllo che erediata dalla classe del MWPSK MyWebPagesStarterKit.Controls.SectionControlBaseClass la quale a sua volta eredita da System.Web.UI.UserControl e scrivere una classe che si occuperà gestire i dati di configurazione ereditata dalla classe MyWebPagesStarterKit.Section.

Per inserire una mappa Virtual Earth all'interno di uno UserControl occorre:

  1. Aggiungere un div nello UserControl all'interno del quale verrà visualizzata la mappa.
    Per poter modificare l'altezza della mappa il div sarà a sua volta contenuto all'interno di un panel:
    <asp:View ID="readonlyView" runat="server">
       <asp:Panel ID="panReadonly" runat="server" Height="300px" Width="100%">
          <div style="position: relative; width: 100%; height: 100%" id="divMap">
          </div>
       </asp:Panel>
    </asp:View>
  2. Aggiungere il meta <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> nel tag head.
    Ciò consente la corretta visualizzazione di tutte le mappe, ad esempio, nel caso di una mappa del Giappone i caratteri
    giapponesi sarranno visualizati correttamente.
    Per aggiungere il tag è possibile utilizzare le seguenti istruzioni:
    System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta();
    meta.HttpEquiv = "Content-Type";
    meta.Content = "text/html; charset=utf-8";
    this.Page.Header.Controls.Add(meta);
  3. Aggiungere il tag script per l'inclusione delle Api di Virtual Earth:
    <script src="http://dev.virtualearth.net/mapcontrol/v5/mapcontrol.js" type="text/javascript"></script>
    Per aggiungere il tag script include è possibile utilizzare le seguenti istruzioni:
    if (!this.Page.ClientScript.IsClientScriptIncludeRegistered(this.GetType(),"mapcontrol"))
      {
        this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "mapcontrol",
          "http://dev.virtualearth.net/mapcontrol/v5/mapcontrol.js");
      }
  4. Costruire lo script block contenente la funzione LoadMap che richiama la funzione javascript BuildMap contenuta nel file ascx dello UserControl con i paramentri impostati in sede di configurazione per il redering della mappa all'interno del div.
    Per aggiungere lo script block è possibile utilizzare le seguenti istruzioni:
    if (!this.Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "loadmap"))
      {
        this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "loadmap",
          "function LoadMap()\n" +
          "{\n" +
          string.Format("BuildMap({0},{1},{2},'{3}',{4},{5},'{6}','{7}');\n",
            this._section.Latitude,
            this._section.Longitude,
            this._section.Zoom,
            this._section.Unit,
            this._section.Fixed.ToString().ToLower(),
            this._section.ShowMiniMap.ToString().ToLower(),
            this._section.PushpinTitle,
            this._section.PushpinDescription) +
            "}",
          true);
      }
  5. Invocare la funzione javascript LoadMap nell'evento onload del body.
    Occorre chiamare il metodo LoadMap dopo aver completato il caricamento della pagina poiché il caricamento della mappa va a
    modificare il DOM e può causare errori nel browser (in particolare con IE7) se le modifiche avvengono prima che tutto il DOM sia stato caricato.
    Per aggiungere lo startup script è possibile utilizzare le seguenti istruzioni:
    if (!this.Page.ClientScript.IsStartupScriptRegistered(this.GetType(), "onload"))
      {
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "onload",
          "AddOnloadEvent(LoadMap);",
          true);
      }
    La funzione javascript AddOnloadEvent si occupa di aggiungere un event handler all'evento onload del body della pagina che
    ospita lo UserControl ed è contenuta nel file ascx dello stesso:
    function AddOnloadEvent(fnc)
    {
      if ( typeof window.addEventListener != "undefined" )
        // Mozilla
        window.addEventListener( "load", fnc, false );
      else if ( typeof window.attachEvent != "undefined" ) {
        // IE
        window.attachEvent( "onload", fnc );
      }
      else {
        // Others
        if ( window.onload != null ) {
          var oldOnload = window.onload;
          window.onload = function ( e ) {
            oldOnload( e );
            window[fnc]();
          };
        }
        else
          window.onload = fnc;
      }
    }

La Section è disponibile per il download al seguente link:
http://www.codeplex.com/MyWebPagesStarterKit/WorkItem/View.aspx?WorkItemId=12747

Ovviamente può ancora essere migliorata in quanto al momento non è localizzata, ma l'interfaccia di configurazione è solo in lingua inglese e non ho scritto l'help ma ho solo gestito il link ad una sezione #virtualearth-content nel file quick_guide.html.
Un'estensione interessante potrebbe essere quella di poter aggiungere più pushpin sulla mappa.

Print | posted on giovedì 13 settembre 2007 03:12 | Filed Under [ Links Code & Snippet .NET Framework 2.0 ASP ]

Feedback

Gravatar

# re: Section VirtualEarth per MWPSK (My Web Pages Start Kit)

The MiniMap display is stuck. The code is running 2 to 3 applications with the edu window.upload. My muddle assignment for Maths is stuck now too. Oh, Gosh. What should I do with that? Pushpin section is and Zoom are on the same error format page though.
12/01/2017 14:52 | one freelance limited review
Gravatar

# Check Cashing Costa-mesa

That could be a marvelous write-up. Tremendously effective in addition to thoroughly! Regards in relation to paying up lot energy source in just revealing such specified data. Nowadays adopt typically the keywords Check Cashing Costa-mesa In relation to amazing write-up.
07/10/2017 21:33 | Pervez
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET