Бих искал да знам как мога да получа достъп до свойства на обект, върнат от функция на javascript, работеща в контрола на уеб браузър от C#.
Ето пълния контекст:
Бих искал да създам контрола за картографиране на C# въз основа на javascript библиотеката с отворени слоеве на OpenStreetMap. OSM картата се показва в уеб страница, показана в елемента на уеб браузъра. Използвам InvokeScript, за да контролирам картата чрез извикване на опростена обвивка на java скрипт за библиотеката с отворени слоеве. Всичко работи добре.
В обвивката на C# бих искал да внедря функция, която връща централните координати на картата, която в момента се показва в контролата на уеб браузъра. Досега измислих само едно доста неелегантно решение:
В моята обвивка на C# имам две функции, от които се нуждая и двете, за да направя запитване до центъра на картата. Първо имам функция, наречена GetCenter, която използва InvokeScript за извикване на JavaScript функция, която от своя страна извиква друга C# функция (SetCenterFromJScript), за да зададе центъра на картата в моя C# обвивка:
public Coord GetCenter()
{
object center = webBrowser.Document.InvokeScript("set_center_in_wrapper");
// I'm stuck here:
Type type = center.GetType();
PropertyInfo[] pi = type.GetProperties();
// I already get the center as an object, but how can i access the
// properties "lon" and "lat" directly so that i can get rid of m_center
// and SetCenterFromJScript alltogether?
return m_center;
}
public void SetCenterFromJScript(double lon, double lat)
{
m_center.lon = lon;
m_center.lat = lat;
}
Функцията на Java скрипт извиква C# чрез механизма ObjectForScripting, както е показано тук:
function set_center_in_wrapper()
{
var center = map.getCenter().transform(new OpenLayers.Projection("EPSG:900913"),
new OpenLayers.Projection("EPSG:4326"))
window.external.SetCenterFromJScript(center.lon, center.lat);
return center // <- useless at the moment since i don't know how to access the data from C#
}
В момента върнатата стойност е безполезна, използвам SetCenterFromJScript, за да изпратя координатите. Как мога да получа достъп до свойствата "lon" и "lat" на центъра от C# директно?
Благодаря предварително, оценяваме всяка помощ.