delphi中给supermap的地图页面添加点

环境:

Delphi7中用WebBrowser打开地图页面,需要在其中添加一个起始点的显示。

supermap的地图显示用ajax实现。

解决办法:

1)在地图页面上添加显示点的javascript函数ShowPOI2(x,y,CallerID),可以添加在js文件中,比如说page.js或者customation.js等同地图页面一起载入的文件。

function ShowPOI2(x,y,callerid)
{
       var InnerHtmlName="<img src=’images/car2.gif’/><font face=’宋体’ size=’2′ color=’#800080′ style=’text-decoration: blink’>"+callerid+"</font>";
       map.CustomLayer.InsertMark("POIInfo1", x, y, 0, 0, InnerHtmlName,10);
       map.SetCenterAndZoom(x,y,8);
}

其中,

CustomLayer.InsertMark(id, x, y, w, h, innerHtml, className, zIndex)
添加自定义注记。如果地图中已经存在与该注记ID相同的对象,则替换存在的注记。
id:自定义注记的ID值。

x:对象的x坐标(地理坐标)

y:对象的y坐标(地理坐标)

w:对象的宽度(显示宽度),以象素(px)为单位

h: 对象的高度(显示高度),以象素(px)为单位

innerHtml:呈现时的HTML

className:呈现时的样式单CSS的ID

zIndex:自定义注记层的Index值。

摘自is.net的开发手册。

如果有多个点要同时显示的,并且都是用InsertMark添加的,那么第一个参数id,就必须不同;或者也可以考虑用addMark添加,addmark允许id相同。

2)   在Delphi中,用webbrowser载入地图页面,利用IHTMLWindow2的executeScript进行调用,传递x,y,callerid的值到ShowPOI函数。如下:

jsfunc := Format('ShowPOI2(%f,%f,%s)', [x, y, 
QuotedStr(ACallerID)]); frame_doc.parentWindow.execScript(jsfunc, 'JavaScript');


注意要引用到地图的frame,不然,会找不到相应的script。


3)  注意,如果点的值位于地图的显示范围之外,可能引起地图白屏,就是白茫茫一片,什么也看不到。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据