Google地图标记自定义图标

码厨frog 2014-08-10 02:42:48
最开始的问题是这样的:
http://bbs.csdn.net/topics/390855382?page=1#post-397950642
现在想到的方法是通过GDI+画出标记然后引用,C#代码如下:
(真正的问题在最后,不要着急
        public Bitmap DrawMarker(int Input)
{
Bitmap marker = new Bitmap(25, 40);

Bitmap midMarker = new Bitmap(50, 80);
Graphics pictureBack = Graphics.FromImage(midMarker);
pictureBack.SmoothingMode = SmoothingMode.AntiAlias;
GraphicsPath markerCenterPath = new GraphicsPath();
GraphicsPath markerPath = new GraphicsPath();

markerCenterPath.AddEllipse(new Rectangle(13, 14, 25, 25));

markerPath.AddBezier(new Point(25, 80), new Point(25, 55), new Point(5, 40), new Point(5, 35));
markerPath.AddBezier(new Point(5, 35), new Point(0, 25), new Point(6, 12), new Point(7, 10));
markerPath.AddBezier(new Point(7, 10), new Point(15, -1), new Point(35, -1), new Point(43, 10));
markerPath.AddBezier(new Point(43, 10), new Point(44, 12), new Point(50, 25), new Point(45, 35));
markerPath.AddBezier(new Point(45, 35), new Point(45, 40), new Point(25, 55), new Point(25, 80));

pictureBack.FillPath(new SolidBrush(Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))))), markerPath);
pictureBack.FillPath(new SolidBrush(Color.Yellow), markerCenterPath);

pictureBack.DrawPath(new Pen(Color.Brown, 2), markerPath);
pictureBack.DrawString(Input.ToString(), new Font("微软雅黑", 20, FontStyle.Bold), new SolidBrush(Color.Black), 14, 9);

Graphics pictureBackEnd = Graphics.FromImage(marker);
pictureBackEnd.SmoothingMode = SmoothingMode.AntiAlias;
pictureBackEnd.DrawImage(midMarker, new Point[] { new Point(0, 0), new Point(marker.Width, 0), new Point(0, marker.Height) });

return marker;
}

总之就是生成一个bitmap的变量(不是文件)
然后JS来调用:
        
airportmodel = new google.maps.Marker({
position: mapProp.center,
map: map,
icon: window.external.DrawMarker()
});

问题出来了,这样调用不行,那么该怎么办呢?谢谢啦!
...全文
549 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
码厨frog 2014-08-10
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
“总之就是生成一个bitmap的变量(不是文件) 然后JS来调用” 我去?!你的GDI+代码运行在浏览器上吗?不在浏览器上,你的JS怎么调用? 要做一个事情,必须先证明是靠谱的。如果离目标有天壤之别,那么就不应该给你出主意。
其实我不是要开发一个网页的,只是一个Winform程序,用webrowser加载地图,JS与C#交互就可以了。谢谢啦!
码厨frog 2014-08-10
  • 打赏
  • 举报
回复
引用 1 楼 jshi123 的回复:
不需要这么复杂。可以先在地图上画出marker,然后把经纬坐标转成lef, top页面坐标,再自己添加个div到这个位置就可以了,div中的内容可以任意写。 这里有个别人封装好的LabelMarker,可以参考下: http://blog.163.com/youthpasses@yeah/blog/static/161849228201152811259906/
太感谢了,太感谢了!
  • 打赏
  • 举报
回复
“总之就是生成一个bitmap的变量(不是文件) 然后JS来调用” 我去?!你的GDI+代码运行在浏览器上吗?不在浏览器上,你的JS怎么调用? 要做一个事情,必须先证明是靠谱的。如果离目标有天壤之别,那么就不应该给你出主意。
jshi123 2014-08-10
  • 打赏
  • 举报
回复
不需要这么复杂。可以先在地图上画出marker,然后把经纬坐标转成lef, top页面坐标,再自己添加个div到这个位置就可以了,div中的内容可以任意写。 这里有个别人封装好的LabelMarker,可以参考下: http://blog.163.com/youthpasses@yeah/blog/static/161849228201152811259906/

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧