PDA

View Full Version : سوال: نحوه استفاده از object بعنوان پارامتر تابع javascripty



leila.net
شنبه 17 خرداد 1393, 10:53 صبح
سلام دوستان
من از google map api تو صفحه استفاده کردم و البته فایل kml که برای مشخص کردن مناطق مورد نظرم روی نقشه ازش استفاده می کنم.
تو infowindow مربوط به Polygon یه input از نوع button تعریف کردم که باکلیک باتن یه تابع جاوااسکریپ رو فراخوانی می کنم الان می خوام polygon که باتن داخلش قرار داده رو بعنوان ورودی به تابع ارسال کنم که با خطا مواجه می شم.
نحوه فراخوانی :



var p = new google.maps.Polygon(polyOptions);
<div><input type="button" id="btnsave" value="ثبت" onclick="saveData('+p+')"/></div>'

function saveData(poly) {
}



و خطا :




SyntaxError: missing ] after element list




saveData([object Object])

mehdi.mousavi
شنبه 17 خرداد 1393, 11:05 صبح
سلام.
شما نباید اینطوری کدهای JavaScript و HTML رو با هم ترکیب کنید. جای اینکار، یه Event Listener برای Google Map تعریف کنید که
Click Event رو برای Polygon مورد نظرتون بگیره. برای اطلاعات بیشتر لطفا به این URL رجوع کنید (http://stackoverflow.com/questions/15208965/google-map-add-click-listener-to-each-polygon).

موفق باشید.

leila.net
شنبه 17 خرداد 1393, 11:29 صبح
سلام.
شما نباید اینطوری کدهای JavaScript و HTML رو با هم ترکیب کنید. جای اینکار، یه Event Listener برای Google Map تعریف کنید که
Click Event رو برای Polygon مورد نظرتون بگیره. برای اطلاعات بیشتر لطفا به این URL رجوع کنید (http://stackoverflow.com/questions/15208965/google-map-add-click-listener-to-each-polygon).
موفق باشید.
بله ، درست است . چون من همه کدها رو قرار ندادم این برداشت بوجود اومده . من از geoxml استفاده می کنم و البته event listener ها رو هم بکار بردم برا تشخیص رویداد click و بخشی از کدهایی که مربوط به این بخش میشه :



var p = new google.maps.Polygon(polyOptions);
p.bounds = bounds;
if (!parserOptions.suppressInfoWindows) {
var infoWindowOptions = geoXML3.combineOptions(parserOptions.infoWindowOpt ions, {
content: '<div class="geoxml3_infowindow" style="width:80%"><h2> نام : <a href="#" id="pname">' + placemark.name +
'</h2></a><div><input class="spinner-input form-control" id="rownum" maxlength="12" placeholder="کد مورد نظر" type="text">'
+'</div><div><input type="button" id="btnsave" value="ثبت" onclick="saveData('+p+')"/></div>'
+'<div>توضیحات :<br/>' + placemark.description + '</div></div>',
pixelOffset: new google.maps.Size(0, 2)
});

if (parserOptions.infoWindow) {
p.infoWindow = parserOptions.infoWindow;
} else {
p.infoWindow = new google.maps.InfoWindow(infoWindowOptions);
}
p.infoWindowOptions = infoWindowOptions;
// Infowindow-opening event handler
google.maps.event.addListener(p, 'click', function(e) {
p.infoWindow.close();
p.infoWindow.setOptions(p.infoWindowOptions);
if (e && e.latLng) {
p.infoWindow.setPosition(e.latLng);
} else {
p.infoWindow.setPosition(p.bounds.getCenter());
}
p.infoWindow.open(this.map);
highlightPolyOnSave(p);


function highlightPoly(poly , polyname , polynum) {
// poly.setOptions({fillColor: "#0000FF", strokeColor: "#0000FF", fillOpacity: 0.3}) ;
google.maps.event.addListener(poly, "click", function () {

var rowElem = document.getElementById('row' + polynum);
if (rowElem) rowElem.style.backgroundColor = "#FFFA5E";

if (poly instanceof google.maps.Polygon) {
poly.setOptions(highlightOptions);
} else if (poly instanceof google.maps.Polyline) {
poly.setOptions(highlightLineOptions);
}
});


google.maps.event.addListener(poly, "mouseout", function () {


});

}


var plist = [];
function saveData(poly) {

var mcount = escape(document.getElementById("rownum").value);
var pname = document.getElementById("pname").innerHTML;

var len = plist.length;

for (var i = 0; i < len; i++) {
// Do stuff

if (pname == plist[i].statename)
{


plist[i].mobilecount = mcount;
}

else {

plist.push({
statename: pname,
mobilecount: mcount,

});
highlightPolyOnSave(setp);

}

}



}

leila.net
چهارشنبه 21 خرداد 1393, 12:09 عصر
فکر می کنم توضیحات پست قبلی زیاده و کسی حوصله خوندنش رو تا انتها نداره :گیج::ناراحت: