点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在开发一个SAPUI5应用程序,该应用程序可在geoMAP上显示路线。
我遵循了本教程' https://embed.plnkr.co/kEzGKiJtuyPKGru5XdL0/' 采用本地JSON数据模型。
在我的应用程序中,我建立了一个odata服务:它由两个实体集组成,分别称为" Trips"和" Trip Details"。 "旅行"由旅行ID组成,并与"旅行详细信息"相关联,该"旅行详细信息"包含该旅行的纬度和经度值。 odata服务的JSON看起来像这样:
{ " d":{ "结果":[ { " __metadata":{ " type":" public。*******。trip_idsType", " uri":" https://*****services/data.xsodata/trip_ids('00000')" }, " TRIP_ID":" 00000", " TRIP_DETAILS":{ " __deferred":{ " uri":" https:/******/services/data.xsodata/trip_ids('00000')/TRIP_DETAILS" } } },..... }
对于我的应用程序,我正在使用主详细信息模板,并且我想在详细信息视图中显示所选行程的相应地图。 详细视图控制器中提供了地图配置。
以下是根据本教程从本地json数据模型绘制路线所需的地图配置。
我遇到的问题是在'oSpotsCollection'和'oRouteCollection'中指定'path'值,因为我现在使用的是oData服务,而不是教程中显示的本地JSON模型。
有人可以根据我的用例帮助我指定路径值吗?
//每个教程的MAP配置 var oMapConfig = {...} var oSpotTemplate = new sap.ui.vbm.Spot({ 职位:{ 部分: [{ 路径:" d/results/LATITUDE" },{ 路径:" d/results/LONGITUDE" }], 格式化程序:function(lat,lon){ return(lon +";" + lat); } }, 类型:sap.ui.vbm.SemanticType.Default, 文字:" {SPEED}" }); var oSpotsCollection = new sap.ui.vbm.Spots({ 项目:{ ----->路径:"/img/d/results", 模板:oSpotTemplate } }); var oRouteTemplate = new sap.ui.vbm.Route({ 职位:{ 路径:" d", 格式化程序:function(arrayOfPoints){ var route = []; var context = this.getBindingContext(); var list = context.oModel.aBindings [0] .oList.d.results; for(var i = 0; i路径:"/", 模板:oRouteTemplate } }); //取消注释以将数据绘制为斑点 //oGeoMap.addVo(oSpotsCollection); oGeoMap.addVo(oRouteCollection);
这是详细视图控制器,就像模板中一样:
onInit:函数(){ //用于操纵控制状态的模型。 选择的值可确保 //详细信息页面会立即显示繁忙状态,因此不会中断 //在繁忙指示之间加载视图的元数据 var oViewModel = new JSONModel({ 忙:错误, 延迟:0 lineItemListTitle:this.getResourceBundle()。getText(" detailLineItemTableHeading") }); this.getRouter()。getRoute(" object")。attachPatternMatched(this._onObjectMatched,this); this.setModel(oViewModel," detailView"); this.getOwnerComponent()。getModel()。metadataLoaded()。then(this._onMetadataLoaded.bind(this)); }, _onObjectMatched:函数(oEvent){ var sObjectId = oEvent.getParameter(" arguments")。objectId; this.getModel(" appView")。setProperty("/img/layout"," TwoColumnsMidExpanded"); this.getModel()。metadataLoaded()。then(function(){ var sObjectPath = this.getModel()。createKey(" trip_ids",{ TRIP_ID:sObjectId }); this._bindView("/" + sObjectPath); } .bind(this)); }, _bindView:函数(sObjectPath){ //在视图绑定期间设置忙碌指示器 var oViewModel = this.getModel(" detailView"); //如果未绑定视图,但视图不忙,则只有在绑定请求数据后,视图才再次设置为忙 oViewModel.setProperty("/img/busy",false); this.getView()。bindElement({ 路径:sObjectPath, 参数:{ 扩展:"段" }, 事件:{ 更改:this._onBindingChange.bind(this), dataRequested:function(){ oViewModel.setProperty("/img/busy",true); }, dataReceived:function(){ oViewModel.setProperty("/img/busy",false); } } }); }, _onBindingChange:函数(){ var oView = this.getView(), oElementBinding = oView.getElementBinding(); //没有用于绑定的数据 如果(!oElementBinding.getBoundContext()){ this.getRouter()。getTargets()。display(" detailObjectNotFound"); //如果找不到对象,则在主列表中进行选择 //不再有意义。 this.getOwnerComponent()。oListSelector.clearMasterListSelection(); 返回; } var sPath = oElementBinding.getPath(), oResourceBundle = this.getResourceBundle(), oObject = oView.getModel()。getObject(sPath), sObjectId = oObject.TRIP_ID, sObjectName = oObject.TRIP_ID, oViewModel = this.getModel(" detailView"); this.getOwnerComponent()。oListSelector.selectAListItem(sPath); oViewModel.setProperty("/img/shareSendEmailSubject", oResourceBundle.getText(" shareSendEmailObjectSubject",[sObjectId])); oViewModel.setProperty("/img/shareSendEmailMessage", oResourceBundle.getText(" shareSendEmailObjectMessage",[sObjectName,sObjectId,location.href]))); },
您好 bhawna saini
您似乎错过了
对我来说,相对于发布的json文件而言,它看起来还不错。
现在,oSpotTemplate应该是path:'d/results/',因为它已经在 它是父项
< p>只需检查...还要检查其他聚集的类似问题。
感谢您的回复。 我对SAPUI5相当陌生,这就是为什么让它工作起来有些困惑。 就像我说的那样,使用简单的本地JSON文件不会遇到任何问题。 问题在于oData服务。 我不明白如何在" oSpotsCollection"和" oRouteCollection"中指定路径值。
对于本地json文件,路径值很简单(路径:"/img/d/results"和路径:"/")。 现在,此odata服务具有" _deferred URI",该URL带有为特定的TRIP_ID关联的"旅行详细信息"实体集。 问题是我不知道如何为有界的" Trip_Details"实体集指定路径,以便我可以访问纬度和经度值。
(很抱歉,如果该问题与我的要求重复,我只想获得与本地json数据模型相同的结果)
oData服务的外观如下:
https: //******/data.xsodata/trip_ids/?$format=json
https:/************/data.xsodata/trip_ids('00000')/TRIP_DETAILS/?$ format = json
一周热门 更多>