Bing Map web part(Javascript Error)

时间:2012-01-23 11:09:02

标签: javascript sharepoint google-maps web-parts bing-maps

我正在尝试将SP2007地图转换为Sharepoint沙盒解决方案,但出于某种原因,当我上传我的webpart,并尝试编辑属性时,我得到此Javascript错误,

  

属性“UpdateWebPartMenuFocus”的值为null或未定义,而不是Function对象

我对这个错误进行了研究,发现只有几个帖子,因为如果有人没有在v4.master(默认母版页)中引用Core.js但是我检查了它已经引用了如下所示,< / p>

<SharePoint:ScriptLink language="javascript" name="core.js" OnDemand="true" runat="server" />

这是我的代码,

        StringBuilder mapHTML = new StringBuilder();
        mapHTML.Append("<div>");
        mapHTML.Append("<script src=\"https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3\"></script>");
        mapHTML.Append("<script type='text/javascript' id='clientEventHandlersJS'>");
        mapHTML.Append("var map = null;");
        mapHTML.Append("function GetMap()");
        mapHTML.Append("{");
        mapHTML.Append("try{");
        mapHTML.Append(" var latLon = new VELatLong(52.29504228453734,-2.2851562500000044);");
        mapHTML.Append("map = new VEMap('myMap');");
        mapHTML.Append("map.LoadMap(latLon,5);");
        mapHTML.AppendFormat("map.Find(null, '{0}', null, null, null, null, false, false, false, true,LocFound);", HtmlEncode(_Location));
        mapHTML.Append("}");
        mapHTML.Append("catch(err){}");
        mapHTML.Append("}");
        mapHTML.Append("function LocFound(thelayer, resultsArray, places, hasMore, veErrorMessage)");
        mapHTML.Append("{");
        mapHTML.Append("try{");
        mapHTML.Append("if(places != null && places.length >0)");
        mapHTML.Append("{");
        mapHTML.Append("var latlong = places[0].LatLong;");
        mapHTML.Append("}");
        mapHTML.Append("else");
        mapHTML.Append("{");
        mapHTML.Append("myMap.style.display = 'none';");
        mapHTML.Append("locationError.style.display = 'block';");
        mapHTML.Append("}");
        mapHTML.Append("var shape = new VEShape(VEShapeType.Pushpin,latlong);");
        mapHTML.AppendFormat("shape.SetTitle('{0}');", HtmlEncode(_PushPinTitle));
        mapHTML.Append("map.AddShape(shape);");
        mapHTML.Append("map.SetZoomLevel(14);");
        mapHTML.Append("}");
        mapHTML.Append("catch(err){}");
        mapHTML.Append("}");
        mapHTML.Append("  function addLoadEvent(func) ");
        mapHTML.Append("  { ");
        mapHTML.Append("try{");
        mapHTML.Append("    var oldonload = window.onload; ");
        mapHTML.Append("    if(typeof window.onload != 'function') ");
        mapHTML.Append("    { ");
        mapHTML.Append("      window.onload = func; ");
        mapHTML.Append("    } ");
        mapHTML.Append("    else ");
        mapHTML.Append("    { ");
        mapHTML.Append("      window.onload = function()");
        mapHTML.Append("        { ");
        mapHTML.Append("          func(); ");
        mapHTML.Append("        } ");
        mapHTML.Append("    } ");
        mapHTML.Append("}");
        mapHTML.Append("catch(err){}");
        mapHTML.Append("  } ");
        mapHTML.Append("addLoadEvent(GetMap); ");
        mapHTML.Append("</script>");
        mapHTML.AppendFormat("<div id=\"myMap\" style=\"position:relative\" width:\"{0}\" height:\"{1}\" ></div>", HtmlEncode(_MapWidth), HtmlEncode(_MapHeight));
        mapHTML.AppendFormat("<div id=\"locationError\" style=\"position:relative\">", HtmlEncode(_MapWidth), HtmlEncode(_MapHeight));
        //mapHTML.AppendFormat("{0}", HtmlEncode(_LocationError));
        mapHTML.Append("</br>");
        mapHTML.AppendFormat("{0}", HtmlEncode(_Location));
        mapHTML.Append("</div>");
        mapHTML.Append("</div>");
        Controls.Add(new LiteralControl(mapHTML.ToString()));
        //AddControl(new LiteralControl(mapHTML.ToString()));

现在我找不到摆脱这个错误的方法,第二,如果有人知道 任何更好的方法来获取地图名称 的webpart中的地图,就像使用谷歌一样API,我看到很少的项目,例如

Bing Map Code Plex

但它看起来有点老式,而且功能较少,因为它没有AJAX控件。

(注意:我不能使用银灯,因为客户数量很多,不想强迫他们安装银灯插件或任何其他限制)

1 个答案:

答案 0 :(得分:0)

错误当我添加此代码时,它会将此脚本注册到Sharepoint 2010脚本管理器并停止冲突,据我所知,如果有人能够更好地解释它,那么非常欢迎。

 System.Web.UI.ClientScriptManager csm = Page.ClientScript;
 StringBuilder builder = new StringBuilder();
 string SCRIPT_NAME = "MapScript" + this.ID;
    {// all that code above}
 csm.RegisterClientScriptBlock(this.GetType(), SCRIPT_NAME, builder.ToString(), false);

Google Map Webpart

这是我真正想要的,但它的谷歌地图+我的网站不是免费的(因为我向用户收取使用我的sharepoint应用程序的费用)

我想知道是否有人知道任何免费许可或我可以使用地图作为webpart。

干杯