您的位置:首页 > 其它

百度地图API调用实例之地址标注与位置显示

2014-02-11 16:11 183 查看
之前弄了个谷歌地图API标注的调用实例,后来要求改成百度地图。

感谢主,通过网上资料(百度地图API百度地图API详解之地图标注)收集及研究,

终于把百度地图标注和显示功能实现出来了,具体实现方法如下:

1.依然是要弄个地图自定义控件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Web.UserControl
{
public partial class BaiduMap : System.Web.UI.UserControl
{
Model.Product ProductModel = new Model.Product();
Model.Users UserModel = new Model.Users();

public string _coord;
public bool _isopencoord;
protected void Page_Load(object sender, EventArgs e)
{

}

#region 属性
/// <summary>
/// 经纬度
/// </summary>
public string Coord
{
get { return _coord; }
set { _coord = value; }
}

/// <summary>
/// 是否开启设置经纬度功能。
/// true:确定开启;false:不开启
/// </summary>
public bool IsOpenCoord
{
get { return _isopencoord; }
set { _isopencoord = value; }
}

/// <summary>
/// 产品编号
/// </summary>
public string ProductID
{
get
{
try
{
return Request.QueryString["pid"].ToString();
}
catch (Exception)
{
return string.Empty;
}
}
}

/// <summary>
/// 会员编号
/// </summary>
public string UserID
{
get
{
try
{
return Request.QueryString["uid"].ToString();
}
catch (Exception)
{
return string.Empty;
}
}

}
/// <summary>
/// 当前产品实体
/// </summary>
public Model.Product ProModel
{
get
{
ProductModel.ProductID = ProductID;
ProductModel.ProductName = string.Empty;
ProductModel.Price = 0;
ProductModel.ProductContent = string.Empty;

return BLL.HSSM_Public_DB.ModelToSqlOne<Model.Product>(ProductModel, "ProductID=" + ProductID);
}
}

/// <summary>
/// 会员实体(卖家)
/// </summary>
public Model.Users UModel
{
get
{
UserModel.Address = string.Empty;

return BLL.HSSM_Public_DB.ModelToSqlOne<Model.Users>(UserModel, "UserID=" + UserID);
}
}

/// <summary>
/// 店铺地址
/// </summary>
public string ShopAddress
{
get { return UModel.Address; }
}
#endregion
}
}


BaiduMap.ascx.cs
2.

(1).标注:

注册地图控件:

<%@ Register Src="../UserControl/BaiduMap.ascx" TagName="BaiduMap" TagPrefix="uc5" %>


调用地图控件:

<uc5:BaiduMap ID="Map1" runat="server" />


后台指定是否启用控件标注位置功能为是:

Map1.IsOpenCoord = true;


这样,运行页面后即可点击鼠标进行标注:



因为是地址标注,所以只允许标注一次,每次新点击之后,会通过

//删除所有标注控件
map.clearOverlays();


清空之前点击的位置图标,并调用:

//新增一个标注控件,并在点击的时候标注在地图上
addMouseMarker();


新建一个位置图标固定在新的点击位置(详细代码请参考上面的控件实现代码)

(注意看,下面的绿色图标位置与上面的不一样,并且之前的图标也被移除了):



同时把新的位置的坐标参数赋给一个隐藏域控件:

$("#<%=hidCoord.ClientID %>").val(curpoint);


然后赋给后台的一个属性,保存时获取该地图控件的经纬度属性赋给某个实体Model的属性然后调用保存方法即可;

(2).显示:

前台一样的思路,也是调用控件:

注册地图控件:

<%@ Register Src="../UserControl/BaiduMap.ascx" TagName="BaiduMap" TagPrefix="uc5" %>


调用地图控件:

<uc5:BaiduMap ID="Map1" runat="server" />


页面加载时后台指定是否启用标注功能属性值为false,同时给控件经纬度属性赋值:

Map1.Coord = Coord;//Coord是本地某个变量或属性,表示具体的经纬度值,以“|”分隔开,如:“120.219375|30.259244”
Map1.IsOpenCoord = false;


这样,页面就能显示地址图标并描述信息:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐