В этой статье вы узнаете, как применять GoogleMapPropertyEditor. Выполните шаги, описанные ниже.

 

public class ClassWithGeoPoint : BaseObject

   {

      public ClassWithGeoPoint(Session session)

           : base(session)

       {

       }

      public override void AfterConstruction()

       {

          base.AfterConstruction();

       }

 

      private string title;

      private string office;          

      public string Title

       {

            get { return title; }

            set { SetPropertyValue("Title", ref title, value); }

       }

      public string Office

       {

            get { return office; }

            set { SetPropertyValue("Office", ref office, value); }

       }          

      public GeoPoint point

       {

            get { return this.GetDelayedPropertyValue<GeoPoint>("point"); }

            set { this.SetPropertyValue<GeoPoint>("point",value); }

       }

   }

 

 protected override void RegisterEditorDescriptors(List<EditorDescriptor> editorDescriptors)

      {

          base.RegisterEditorDescriptors(editorDescriptors);

           editorDescriptors.Add(new PropertyEditorDescriptor(new AliasRegistration("GeoPointPropertyEditor", typeof(GeoPoint), false)));

      }

 

 protected override void RegisterEditorDescriptors(List<EditorDescriptor> editorDescriptors)

       {

          base.RegisterEditorDescriptors(editorDescriptors);

           editorDescriptors.Add(new PropertyEditorDescriptor(new EditorTypeRegistration("GeoPointPropertyEditor", typeof(GeoPoint), typeof(ASPxGoogleMapsPropertyEditor), true)));

       }

 

      public override void ExtendModelInterfaces(ModelInterfaceExtenders extenders)

       {

           extenders.Add<IModelPropertyEditor, IModelPropertyEditorWebLayout>();

           extenders.Add<IModelMemberViewItem, IModelMapPropertyEditorWeb>();

       }

 

public partial class GoogleMapsViewController : ViewController

   {

      private void CallbackManager_ScriptCreating(object sender, ScriptCreatingEventArgs e)

       {

           ((Page)Frame.Template).ClientScript.RegisterStartupScript(typeof(Page), "mapScript",

                                                                      "<script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>");

       }

 

      private XafCallbackManager GetCallbackManager()

       {

          XafCallbackManager manager = null;

 

          if (Frame != null && Frame.Template != null)

           {

              var holder = Frame.Template as ICallbackManagerHolder;

 

              if (holder != null)

                   manager = holder.CallbackManager;

           }

          return manager;

       }

 

      private void Frame_TemplateChanging(object sender, EventArgs e)

       {

          var callbackManager = GetCallbackManager();

 

          if (callbackManager != null)

               callbackManager.ScriptCreating -= CallbackManager_ScriptCreating;

       }

 

      private void Frame_TemplateChanged(object sender, EventArgs e)

       {

          var callbackManager = GetCallbackManager();

 

          if (callbackManager != null)

               callbackManager.ScriptCreating += CallbackManager_ScriptCreating;

       }

 

      protected override void OnFrameAssigned()

       {

          base.OnFrameAssigned();

           Frame.TemplateChanging += Frame_TemplateChanging;

           Frame.TemplateChanged += Frame_TemplateChanged;

       }

     

   }

Этот контроллер обеспечит подключение java script, необходимого для Google map.