这个问题困扰我好些天了。。大概是(1) 创建一个临时图层
(2)读取GPS点
(3)在该图层上AddFeature()
(4)设置MapCenter 属性到该点的位置。
这些步骤,就是地图一个对象、要汽车一个对象(就是要画出来的图片),然后让两者匹配。。把图片钉到地图上。。MapXtreme 也好,mapx也罢。。我被搞的晕头转向。下边是我的错误代码。请高手指点我该如何修改 [align=left] MapInfo.Mapping.Map map = (MapInfo.Mapping.Map) o; // Display the zoom level
Double dblZoom = System.Convert.ToDouble(String.Format("{0:E2}", mapControl1.Map.Zoom.Value));
statusBar1.Text = "Zoom: " + dblZoom.ToString() + " " + mapControl1.Map.Zoom.Unit.ToString();
MapInfo.Geometry.DPoint dp=new MapInfo.Geometry.DPoint();
dp.x=double.Parse("119.234975");
dp.y=double.Parse("26.055025"); System.Drawing.Point ScrPoint=new Point();
mapControl1.Map.DisplayTransform.ToDisplay(dp,out ScrPoint); //这行我是想讲经纬度转换成屏幕上的坐标。。 string a=ScrPoint.X.ToString(); //输出4701243.0 我觉得很莫名奇妙
string b=ScrPoint.Y.ToString();
MapXLib.Map mapx_Lib=((MapXLib.Map)map);
//mapx_Lib.DefaultStyle.SymbolFont="custom symbols"; //这一行有错。。提示SymbolFont只读
mapx_Lib.DefaultStyle.SymbolType=1;
mapx_Lib.DefaultStyle.SymbolBitmapName="PING-64.BMP";
mapx_Lib.DefaultStyle.SymbolBitmapSize=24;
mapx_Lib.DefaultStyle.SymbolBitmapTransparent=true; fNewSymbol = mapx_Lib.FeatureFactory.CreateSymbol(ScrPoint, mapx_Lib.DefaultStyle);
MapXLib.RowValues rv=new MapXLib.RowValuesClass();
fMapSymbol = lyrMyLayer.AddFeature(fNewSymbol,rv);
a = fMapSymbol.FeatureKey; //我自己都搞不明白这个a是那里来滴。。[/align] 如果觉得我写太乱。。请大侠帮忙贴一下C# 的代码谢谢。。
(2)读取GPS点
(3)在该图层上AddFeature()
(4)设置MapCenter 属性到该点的位置。
这些步骤,就是地图一个对象、要汽车一个对象(就是要画出来的图片),然后让两者匹配。。把图片钉到地图上。。MapXtreme 也好,mapx也罢。。我被搞的晕头转向。下边是我的错误代码。请高手指点我该如何修改 [align=left] MapInfo.Mapping.Map map = (MapInfo.Mapping.Map) o; // Display the zoom level
Double dblZoom = System.Convert.ToDouble(String.Format("{0:E2}", mapControl1.Map.Zoom.Value));
statusBar1.Text = "Zoom: " + dblZoom.ToString() + " " + mapControl1.Map.Zoom.Unit.ToString();
MapInfo.Geometry.DPoint dp=new MapInfo.Geometry.DPoint();
dp.x=double.Parse("119.234975");
dp.y=double.Parse("26.055025"); System.Drawing.Point ScrPoint=new Point();
mapControl1.Map.DisplayTransform.ToDisplay(dp,out ScrPoint); //这行我是想讲经纬度转换成屏幕上的坐标。。 string a=ScrPoint.X.ToString(); //输出4701243.0 我觉得很莫名奇妙
string b=ScrPoint.Y.ToString();
MapXLib.Map mapx_Lib=((MapXLib.Map)map);
//mapx_Lib.DefaultStyle.SymbolFont="custom symbols"; //这一行有错。。提示SymbolFont只读
mapx_Lib.DefaultStyle.SymbolType=1;
mapx_Lib.DefaultStyle.SymbolBitmapName="PING-64.BMP";
mapx_Lib.DefaultStyle.SymbolBitmapSize=24;
mapx_Lib.DefaultStyle.SymbolBitmapTransparent=true; fNewSymbol = mapx_Lib.FeatureFactory.CreateSymbol(ScrPoint, mapx_Lib.DefaultStyle);
MapXLib.RowValues rv=new MapXLib.RowValuesClass();
fMapSymbol = lyrMyLayer.AddFeature(fNewSymbol,rv);
a = fMapSymbol.FeatureKey; //我自己都搞不明白这个a是那里来滴。。[/align] 如果觉得我写太乱。。请大侠帮忙贴一下C# 的代码谢谢。。
在地图上添加图元不需要自己绘制,因为MAPX已经将相应功能集成在其中了,你只需要简单调用即可。 MapXLib.Feature ftr = new MapXLib.FeatureClass();
ftr.Attach(amapMain.GetOcx());
ftr.Type = MapXLib.FeatureTypeConstants.miFeatureTypeSymbol;
ftr.Style = amapMain.DefaultStyle;
ftr.KeyValue = “车牌号码”;
ftr.Point.Set(carx, cary);
将汽车图标添加到MAPX地图上: //设置\MapX 5.0\CUSTSYMB 路径下的图片
ftr.Style.SymbolBitmapName = "C:\\Car.bmp";
ftr.Style.SymbolBitmapTransparent = true;
ftr.Style.SymbolBitmapSize = 32;
ftr = amapMain.Layers._Item("图层名").AddFeature(ftr, new MapXLib.RowValuesClass());
MapInfo.Mapping.Map map = (MapInfo.Mapping.Map) o; // Display the zoom level
Double dblZoom = System.Convert.ToDouble(String.Format("{0:E2}", mapControl1.Map.Zoom.Value));
statusBar1.Text = "Zoom: " + dblZoom.ToString() + " " + mapControl1.Map.Zoom.Unit.ToString();
MapInfo.Geometry.DPoint dp=new MapInfo.Geometry.DPoint(); dp.x=double.Parse("119.234975");
dp.y=double.Parse("26.055025"); System.Drawing.Point ScrPoint=new Point();
mapControl1.Map.DisplayTransform.ToDisplay(dp,out ScrPoint); //这行我是想讲经纬度转换成屏幕上的坐标。。 string a=ScrPoint.X.ToString(); //输出4701243.0 我觉得很莫名奇妙
string b=ScrPoint.Y.ToString(); MapXLib.Map mapx_Lib=((MapXLib.Map)map); //mapx_Lib.DefaultStyle.SymbolFont="custom symbols"; //这一行有错。。提示SymbolFont只读
mapx_Lib.DefaultStyle.SymbolType=1;
mapx_Lib.DefaultStyle.SymbolBitmapName="PING-64.BMP";
mapx_Lib.DefaultStyle.SymbolBitmapSize=24;
mapx_Lib.DefaultStyle.SymbolBitmapTransparent=true; fNewSymbol = mapx_Lib.FeatureFactory.CreateSymbol(ScrPoint, mapx_Lib.DefaultStyle); MapXLib.RowValues rv=new MapXLib.RowValuesClass();
fMapSymbol = lyrMyLayer.AddFeature(fNewSymbol,rv);
a = fMapSymbol.FeatureKey; //我自己都搞不明白这个a是那里来滴。。