今天寫了個程序,需要修改已有地圖中的路線名稱或圖標點名稱
用瞭如下語句卻總是修改無效
// 鼠標點擊事件
// 將點擊選中的線路更改爲新的名稱
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();