65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Dundas Map 和 AJAX 理解地理数据

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2006年10月12日

CPOL

6分钟阅读

viewsIcon

85329

创建数据丰富的地图是一个挑战。使它们易于操作进一步增加了这项任务的复杂性。了解如何使用 Dundas Map 的 AJAX 驱动的缩放、平移和导航功能克服这两个挑战,以及如何为您的 Dundas Map 应用程序添加更多交互性。

这是 CodeProject 赞助商的展示评论。这些评论旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。

引言

Dundas Software 最新的 ASP.NET 产品是 Dundas Map,于 2006 年 9 月 12 日发布。(在此处下载 Dundas Map for ASP.NET 的完整评估副本。)Dundas Map 的主要目的是为数据提供地理上下文。与其姊妹产品 (Dundas Chart) 一样,Map 控件巧妙地利用 AJAX 来实现其一些核心功能。除此之外,Dundas Map 还提供了一个完整的结构,开发人员可以在此基础上通过使用 AJAX 引入额外的交互性。

什么是 AJAX?

AJAX(Asynchronous JavaScript and XML)是一种用于开发交互式 Web 应用程序的 Web 开发技术。通过客户端和服务器之间少量数据的交换,AJAX 提供了一种理想的方式来交付高响应、快速加载、用户友好的 ASP.NET 应用程序。

Dundas Map 中的 AJAX

Dundas Map for ASP.NET 使用 AJAX 来管理以下内置功能

  • 视口平移
  • 导航
  • 缩放

让我们仔细看看这些功能。

缩放、平移和导航

将地图控件拖放到工作区后,启用缩放、平移和面板驱动的导航非常简单。这些属性可以通过属性浏览器、Dundas Map Wizard™ 或通过编程方式启用,如下所示

MapControl1.ZoomPanel.Visible = true;
MapControl1.NavigationPanel.Visible = true;
MapControl1.Viewport.EnablePanning = true;

启用这三个属性后,地图将采用默认的缩放和导航参数,例如最小和最大缩放。然后可以修改这些参数以满足基于地图的应用程序的逻辑约束和美学需求。


图 1:启用交互式缩放和导航面板

使用缩放、平移和导航功能,用户可以轻松驱动地图,允许他们指定感兴趣的区域和地图中的细节程度。在此示例中,代表城市的符号已附加到名为“LayerCities”的图层。此图层设置为在 250 到 1200 的缩放级别可见。


图 2:属性浏览器中的图层集合编辑器

当我们放大地图时,这些城市变得可见,为我们的地图提供了更大的信息深度。只需几次鼠标操作,我们就可以实现如图 3 所示的视图。此视图是通过放大(使用缩放面板)并导航和平移到我们感兴趣的区域(在本例中为东非)来实现的。值得注意的是,有一个图层属性 LabelVisibleFromZoom。此属性允许我们在隐藏符号标签的同时使符号可见,这在低缩放级别和符号密度高的地图中非常有用。


图 3:地图的放大视图

我们到目前为止看到的所有功能(AJAX 驱动或其他)都是 Dundas Map 控件的原生功能,无需编写一行代码即可实现。然而,向地图添加自定义交互性将需要一些编码。值得庆幸的是,组件中内置的全面 AJAX 支持简化了自定义。AJAX 与回调相结合,允许我们更新地图元素(或整个地图控件),而无需刷新页面。这种灵活性开辟了一个充满可能性的世界,例如实时更新地图及其元素的能力。这可能涉及美学、可见性、制图投影、底层数据或行为的变化。让我们实现一些自定义交互性。

自定义交互性和 AJAX

有了上述功能,我们只需几行代码即可轻松添加更多用户驱动的功能。使用 AJAX,我们可以修改现有符号。使用 HTML 复选框,我们可以让用户在符号标签隐藏时向其添加工具提示。

要启用此功能,我们只需要两样东西:一个简短的 JavaScript 函数和一个回调。

// Client-side JavaScript 
function CheckboxCapitals_onclick()
{
    var mapControl = document.getElementById("MapControl1");
    var checkCities = document.getElementById("CheckboxCities");
    mapControl.doCallback("CityVisbility", checkCities.checked);
}

// Server-side C# callback routine
protected void MapControl1_Callback(object sender, 
          Dundas.Maps.WebControl.CallbackEventArgs e)
{   
    MapControl mapControl = e.MapControl;
    if (e.CommandName == "CityVisbility")
    {
        if (e.CommandArgument == "true")
        {
            mapControl.Layers[0].VisibleFromZoom = 
                            mapControl.Viewport.Zoom;

            //Detach SymbolField data from the tooltip 
            //of each symbol in the map's collection
            foreach (Symbol city in mapControl.Symbols)
            {
                city.ToolTip = "";
            }
        }
        else
        {
            //Attach NAME SymbolField data to the tooltip 
            //of each symbol in the map's collection
            foreach (Symbol city in mapControl.Symbols)
            {
                city.ToolTip= "#NAME";
            }
        }
        e.ReturnCommandName = "UpdatePageElements";
    }
}

上面的示例使用了一个地图控件,其回调事件配置为接收由地图创建的回调。回调例程本身使用从客户端传回的 CommandNameCommandArgument 来决定采取什么操作。CommandName 用于指明要对地图进行的更改,这很重要,因为多个客户端操作可以链接到单个回调例程。CommandArgument 参数用于向服务器提供参数,以帮助其进行更改。在此示例中,它用于传递一个简单的 truefalse 字符串来确定客户端复选框的状态。


图 4:上述修改产生了上述地图

要实现图 4 中的地图,我们(通过编程方式)将 LayerCities 的 VisibleFromZoom 属性等同于视口的当前缩放,使城市可见。我们还为每个城市添加了工具提示,以帮助用户评估地图。(注意:您需要将鼠标悬停在符号上才能显示其工具提示。)所有数据字段(在组、形状、符号和路径中)都可以通过在字段名称开头添加“#”来直接在代码中访问。这种直接访问允许数据轻松地附加和分离地图元素。让我们通过显示我们现有地图中各国的人口来进一步探索此功能。

为了显示人口,我们需要创建一个 ShapeRule。在此规则中,我们必须设置我们希望在色样中反映的 ShapeField 值,在本例中是人口。同样,这些属性可以通过编程方式或通过 ShapeRule Collection Editor 进行设置。将 ShapeField 设置为 POPULATION,并使用均等分布对数据进行分组。经过一些美学上的更改,我们的地图将看起来像这样


图 5:显示各国人口和主要城市的地图

在数据位于外部数据库的情况下,我们可以使用 DataBindingRules Collection Editor 创建/编辑规则,指定一个 BindingField 和一个 DataMember 来等同于该字段。在这种情况下,实际数据直到运行时才合并到地图中。这将确保每次生成地图时都使用最新的信息。我们可以使用 AJAX 更新这些数据,就像我们修改符号工具提示一样。

在回调的末尾,一旦在服务器端进行了更改,客户端就会相应地更新。除此之外,服务器能够向客户端返回一个命令。这是通过设置 ReturnCommandName 属性来完成的。这反过来又可以被客户端脚本用于对托管地图控件的 ASP.NET 页面进行额外的更改。

结论

Dundas Map for ASP.NET 的 AJAX 支持允许开发人员快速实现具有出色数据深度的地图应用程序,同时允许高度自定义的交互性。这种数据丰富性和交互能力允许开发人员轻松创建功能强大、用户友好的基于地图的 ASP.NET 应用程序。

在此处下载 Dundas Map for ASP.NET 的完整评估副本。

© . All rights reserved.