zoukankan      html  css  js  c++  java
  • Orchard:使用VS2010来生成一个地图Content Part

        本篇介绍使用VS2010来开发一个地图Map part,然后在一个内容项中显示一个地图图片。在本文最后我将附上本示例的模块代码,大家可以下载进行查看。如果你还不知道如何生成一个Content part,请先看我之前写的在Orchard:生成一个Content Part

    生成模块目录结构

    打开Code Generation 功能,输入下面的命令来生成Maps模块:
    codegen module Maps /IncludeInSolution:true

    这里的参数IncludeInSolution 表示Orchard把Maps module项目文件加入到Orchard.sln方案中

    打开Orchard.sln方案后,可以看到Map项目:


    生成
    model

    在Modle目录下生成文件Map.cs:

    生成数据迁移类data migration

    进入Orchard命令行,输入

    codegen datamigration Maps


    Migrations.s文件如下:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Data;
    using Maps.Models;
    using Orchard.ContentManagement.Drivers;
    using Orchard.ContentManagement.MetaData;
    using Orchard.ContentManagement.MetaData.Builders;
    using Orchard.Core.Contents.Extensions;
    using Orchard.Data.Migration;

    namespace Maps.DataMigrations
    {
    public class Migrations : DataMigrationImpl
    {

    public int Create()
    {
    // Creating table MapRecord
    SchemaBuilder.CreateTable("MapRecord", table => table
    .ContentPartRecord()
    .Column(
    "Latitude", DbType.Double)
    .Column(
    "Longitude", DbType.Double)
    );

    ContentDefinitionManager.AlterPartDefinition(
    typeof(MapPart).Name, cfg => cfg.Attachable());

    return 1;
    }
    }
    }

    增加handler

    添加文件Handlers\MapHandler.cs:

    View Code
    using Maps.Models;
    using Orchard.ContentManagement.Handlers;
    using Orchard.Data;

    namespace Maps.Handlers
    {
    public class MapHandler : ContentHandler
    {
    public MapHandler(IRepository<MapRecord> repository)
    {
    Filters.Add(StorageFilter.For(repository));
    }
    }
    }

    添加 driver

    添加文件Drivers\MapDriver.cs

    View Code
    using Maps.Models;
    using Orchard.ContentManagement;
    using Orchard.ContentManagement.Drivers;

    namespace Maps.Drivers
    {
    public class MapDriver : ContentPartDriver<MapPart>
    {
    protected override DriverResult Display(
    MapPart part,
    string displayType, dynamic shapeHelper)
    {

    return ContentShape("Parts_Map", () => shapeHelper.Parts_Map(
    Longitude: part.Longitude,
    Latitude: part.Latitude));
    }

    //GET
    protected override DriverResult Editor(
    MapPart part, dynamic shapeHelper)
    {

    return ContentShape("Parts_Map_Edit",
    ()
    => shapeHelper.EditorTemplate(
    TemplateName:
    "Parts/Map",
    Model: part,
    Prefix: Prefix));
    }
    //POST
    protected override DriverResult Editor(
    MapPart part, IUpdateModel updater, dynamic shapeHelper)
    {

    updater.TryUpdateModel(part, Prefix,
    null, null);
    return Editor(part, shapeHelper);
    }
    }
    }

    建立模板templates

    添加文件Views/EditorTemplates/Parts/Map.cshtml:

    View Code
    @model Maps.Models.MapPart

    <fieldset>
    <legend>Map Fields</legend>

    <div class="editor-label">
    @Html.LabelFor(model
    => model.Latitude)
    </div>
    <div class="editor-field">
    @Html.TextBoxFor(model
    => model.Latitude)
    @Html.ValidationMessageFor(model
    => model.Latitude)
    </div>

    <div class="editor-label">
    @Html.LabelFor(model
    => model.Longitude)
    </div>
    <div class="editor-field">
    @Html.TextBoxFor(model
    => model.Longitude)
    @Html.ValidationMessageFor(model
    => model.Longitude)
    </div>

    </fieldset>

    添加文件Views/Parts/Map.cshtml:

    View Code
    <img alt="Location" border="1" src="http://maps.google.com/maps/api/staticmap?
    &zoom=12
    &size=500x500
    &maptype=roadmap
    &markers=color:blue|@Model.Latitude,@Model.Longitude
    &sensor=false" />
    在模块根目录下新建一个placement.info文件,指定plcaement

    <Placement>

    <Place Parts_Map="Content:10"/>

    <Place Parts_Map_Edit="Content:7.5"/>

    </Placement>

    打开功能

    给上一示例的Prodcut Content Types增加Map.

     


    新建一个Prodcut

    可以在FireFox插件FireBug上打开控制台命令行,输入 gApplication.getMap().getCenter() 运行后获得当前Google地图中心的经纬度

     

    查看

    代码下载地址:http://u.115.com/file/f0bd649a78 (有效期31天)

    参考:Writing a content part

    推荐:你可能需要的在线电子书 

    我的新浪围脖: http://t.sina.com.cn/openexpressapp

    欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

  • 相关阅读:
    if——while表达式详解
    java算法:抽象数据类型ADT
    java算法:FIFO队列
    Android_NetworkInfo以及判断手机是否联网
    java算法:堆栈ADT及实例
    java算法:数据项
    java算法:一流的ADT
    java算法:复合数据结构
    java算法:字符串
    java算法:基于应用ADT例子
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1955283.html
Copyright © 2011-2022 走看看