今天写了个程序,需要修改已有地图中的路线名称或图标点名称
用了如下语句却总是修改无效
// 鼠标点击事件
// 将点击选中的线路更改为新的名称
CString szRoadName = "";
m_cRoadName.GetWindowText(szRoadName);
if ("" == szRoadName) return;
CMapXPoint pnt;
pnt.CreateDispatch(pnt.GetClsid());
double mapx,mapy;
m_CtrlMap.ConvertCoord(&X, &Y, &mapx, &mapy, miScreenToMap);
pnt.Set(mapx, mapy);
CMapXFeatures ftrs = m_CtrlMap.GetLayers().Item(m_szSelRoadLyr).SearchAtPoint(pnt);
if (ftrs.GetCount() > 0)
{
ftrs.Item(1).SetKeyValue(szRoadName);
ftrs.Item(1).Update();
}
最后发现问题原来是直接引用Item的问题,换成下面的语句问题解决
CMapXFeature ftr = ftrs.Item(1);
ftr.SetKeyValue(szRoadName);
ftr.Update();