虽然最终因为微软的AJAX问题,放弃使用GoogleMapControl在Google Maps中的应用,但开发过程中遇到的一些问题,找到的解决办法,还是可以总结总结,让同好少走弯路。在遇到无法解决的问题时,要注意阅读关于该控件的留言,控件的开发者和爱好者许多问题都给出了解决方法。
问题1:地图重新定位中心点,无法定位,需要加入下面的加粗体的那一行。
siteId = int.Parse(GVName.SelectedRow.Cells[0].Text.ToString())-1;//期待自动弹出页面出现
GoogleMapForASPNet1.GoogleMapObject.RecenterMap = true;
GooglePoint GPBackground = new GooglePoint("XXX", GoogleMapForASPNet1.GoogleMapObject.Points[siteId].Latitude, GoogleMapForASPNet1.GoogleMapObject.Points[siteId].Longitude);
GPBackground.IconImage = "pushpinicon/red.png";
GoogleMapForASPNet1.GoogleMapObject.Points.Add(GPBackground);
GPBackground.IconAnchor_posY = 8;
GoogleMapForASPNet1.GoogleMapObject.ZoomLevel = 15;
GoogleMapForASPNet1.GoogleMapObject.CenterPoint = GoogleMapForASPNet1.GoogleMapObject.Points[siteId];
问题2:地图图标的ICON图像找不到路径,或者在Visual Studio.net中调试,出现“不是有效的虚拟路径”类似问题,这是控件中的Bug,需要修改cGoogleMaps.cs文件中的函数GetLocalPath()如下:
public static string GetLocalPath()
{
string[] s = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.Split(new char[] { '/' });
string PageName = s[s.Length - 1];
int PageNameLength = PageName.IndexOf("?"); // New
if (PageNameLength != -1) // New
{ // New
PageName = PageName.Substring(0, PageNameLength);
} // New
s = System.Web.HttpContext.Current.Request.MapPath(PageName).Split(new char[] { '\\' });
string path = s[0] + "\\";
for (int i = 1; i < s.Length - 1; i++)
{
path = path + s[i] + "\\";
}
return path;
}
注意下载最新版本,老版本缺失许多功能,目前版本为1.5,其他关于GoogleMapForASPNet使用中遇到的其他问题,请详细查看其网站。