Немного о doozy здесь. У меня есть различные открытые системы COM, и я внедрил карты Google (v3) в свое программное обеспечение .net. То, что я пытаюсь сделать сейчас, заключается в том, что когда пользователь редактирует многоугольник (определяя область), я отправляю обратно все точки пути в .net для хранения в нашей базе данных.Массив объектов JS для VB.Net
Моя проблема в том, что .Net знает, что массив JS, который я передаю назад, является X-элементами по размеру, но для жизни я не могу понять, как ссылаться на значения при итерации по массиву.
Вот метод .NET (VB) Я использую от JS с window.external
Public Sub AreaPointMoved(ByRef obj As Object, ByVal s As String)
MsgBox(s) ' contains a string of lat/lngs from JS
MsgBox(obj.length)
For i As Integer = 0 To obj.length
MsgBox(obj(i).lat & ", " & obj(i).lng) ' this doesn't work
'MsgBox(obj.lat & ", " & obj.lng) ' this doesn't work
Next
End Sub
И JS, который посылает материал обратно на set_at
событии срабатывает:
function DrawAreaOverlay(area, col)
{
var coordsString = "";
var areaCoords = [];
overlayLayer[overlayCount] = new Array();
for(var j=0; j<area.Count; j++)
{
areaCoords.push(new google.maps.LatLng(area.Item(j).lng, area.Item(j).lat));
}
var poly = new google.maps.Polygon({
paths: areaCoords,
strokeColor: col,
strokOpacity: 0.35,
strokeWeight: 2,
fillColor: col,
fillOpacity: 0.25,
geodesic: false,
editable: canEdit,
draggable: canDrag,
map: map
});
overlayLayer[overlayCount].push(poly);
poly.getPaths().forEach(function(path, index){
google.maps.event.addListener(path, 'set_at', function(){
var arrayOfPoints = new Array();
var g = new Array();
arrayOfPoints = poly.getPath();
coordsString = "";
for(var i=0; i<arrayOfPoints.length; i++)
{
//simpleArray[i] = poly.getPath().getAt(i).lat() + ", " + poly.getPath().getAt(i).lng();
geoObj = new Object();
geoObj.lat = poly.getPath().getAt(i).lat();
geoObj.lng = poly.getPath().getAt(i).lng();
g.push(geoObj);
coordsString += poly.getPath().getAt(i).lat() + ", " + poly.getPath().getAt(i).lng() + "|";
}
window.external.AreaPointMoved(g, coordsString);
//alert(path.getLength());
});
});
}
Я я действительно смущен. Получение объектов из .net в JS было неудачей. Но я не могу за жизнь мне понять, что я делаю неправильно на реверсе :(
Приветствий.
Что делать, если вы положили точку останова на MsgBox и проверили, что там? – EaterOfCode
Дисплеи: System .__ COMObject - но не позволяйте мне видеть любые поля или свойства любого типа. – LokiSinclair
Попробуйте использовать obj [i] вместо obj (i) – kcak11