ฉันทำงานบนแผนที่สองวันนี้รหัส JS เล็กน้อยและข้อผิดพลาดต่าง ๆ ครั้งแรกที่ฉันติดต่อกับ JS มีปัญหาทุกประเภท มาสรุปการวิจัยในไม่กี่วันที่ผ่านมาและขอกลอุบาย
ใช้การปิดในผู้ฟังเหตุการณ์
เมื่อดำเนินการฟังเหตุการณ์มักจะเป็นที่พึงปรารถนาที่จะแนบข้อมูลส่วนตัวและข้อมูลถาวรกับวัตถุ JavaScript ไม่รองรับข้อมูลอินสแตนซ์ "ส่วนตัว" แต่รองรับการปิดที่อนุญาตให้ฟังก์ชั่นภายในสามารถเข้าถึงตัวแปรภายนอก ในเหตุการณ์ผู้ฟังการปิดเหมาะสำหรับการเข้าถึงตัวแปรที่ไม่ได้แนบกับวัตถุที่เกิดขึ้น
ตัวอย่างต่อไปนี้ใช้การปิดฟังก์ชั่นในฟังเหตุการณ์เพื่อกำหนดข้อความที่เข้ารหัสให้กับชุดของแท็ก การคลิกที่แต่ละแท็กจะเห็นบางส่วนของข้อความที่เข้ารหัสที่ไม่รวมอยู่ในแท็กเอง
การคัดลอกรหัสมีดังนี้:
แผนที่ var;
ฟังก์ชั่นเริ่มต้น () {
var mylatlng = ใหม่ google.maps.latlng (-25.363882,131.044922);
var mapoptions = {
ซูม: 4,
ศูนย์: mylatlng,
MapTypeId: google.maps.maptypeid.roadmap
-
MAP = ใหม่ google.maps.map (document.getElementById ("map_canvas"), mapoptions);
// เพิ่มเครื่องหมาย 5 ตัวลงในแผนที่ในสถานที่สุ่ม
var Southwest = ใหม่ google.maps.latlng (-31.203405,125.244141);
var Northeast = ใหม่ google.maps.latlng (-25.363882,131.044922);
ขอบเขต var = ใหม่ google.maps.latlngbounds (ตะวันตกเฉียงใต้, ภาคตะวันออกเฉียงเหนือ);
map.fitbounds (ขอบเขต);
var lngspan = northeast.lng () - Southwest.lng ();
var latspan = Northeast.lat () - Southwest.lat ();
สำหรับ (var i = 0; i <5; i ++) {
var location = new google.maps.latlng (Southwest.lat () + latspan * math.random (),
SOUTHWEST.LNG () + LNGSPAN * MATH.RANDOM ());
var marker = ใหม่ google.maps.marker ({
ตำแหน่ง: ตำแหน่ง,
แผนที่: แผนที่
-
var j = i + 1;
marker.settitle (J.ToString ());
AttachSecretMessage (marker, i);
-
-
// เครื่องหมายทั้งห้าแสดงข้อความลับเมื่อคลิก
// แต่ข้อความนั้นไม่ได้อยู่ในข้อมูลอินสแตนซ์ของเครื่องหมาย
ฟังก์ชั่น AttachSecretMessage (marker, number) {
message var = ["this", "คือ", "the", "secret", "message"];
var infowindow = ใหม่ google.maps.infowindow (
{เนื้อหา: ข้อความ [หมายเลข]
ขนาด: ใหม่ google.maps.size (50,50)
-
google.maps.event.addlistener (marker, 'คลิก', function () {
infowindow.open (แผนที่, เครื่องหมาย);
-
-
รหัสนี้ถูกคัดลอกจากเจ้าหน้าที่ของ Google
ต่อไปฉันต้องการอ่านละติจูดและลองจิจูดและข้อมูลที่อยู่จากฐานข้อมูลทำเครื่องหมายบนแผนที่ Google และคลิกเพื่อทำเครื่องหมายให้ปรากฏ
ในการใช้คำอธิบายประกอบหลายจุดรหัสข้างต้นสามารถอ้างอิงได้
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript">
แผนที่ var;
window.onload = function load () {
var number = '< %= number %>'; // รับค่าของจำนวน pubilc ในพื้นหลัง cs
ที่อยู่ var = อาร์เรย์ใหม่ ()
var weidu = new Array ();
var jingdu = new Array ();
var chepai = new Array ();
< % สำหรับ (int i = 0; i <number; i ++) { %>
weidu.push ('<%= lan [i]%>'); // รับค่าละติจูดและลองจิจูดจากพื้นหลัง cs
jingdu.push ('<%= lon [i]%>');
address.push ('<%= addr [i]%>');
chepai.push ('< %= carnum [i] %>');
// var wei;
// wei = chepai ['<%= i%>'];
// Alert (wei);
-
var latlng = ใหม่ google.maps.latlng (weidu [0], jingdu [0]);
// var mylatlng = ใหม่ google.maps.latlng (25.273566, 110.290195);
var myoptions = {
ซูม: 8,
ศูนย์: latlng,
MapTypeId: google.maps.maptypeid.roadmap
-
map = ใหม่ google.maps.map (document.getElementById ("MAP_CANVAS"), myOptions); //// เริ่มต้นอินสแตนซ์แผนที่
สำหรับ (var j = 0; j <number; j ++) // ฉันติดอยู่ที่นี่เป็นเวลานานเพราะประเภท JS เป็นเพียง var; ฉันสับสน JS และ CS และใช้มันจนกระทั่ง " % %>. อันที่จริงแล้ว JS Simple ไม่ต้องการมันเกือบจะเหมือนกับ C
-
var lat = weidu [j];
var lng = jingdu [j];
ที่อยู่ var = ที่อยู่ [j];
var chepaihao = chepai [j];
// Alert (J);
// Alert (lat);
// var image = 'image/webcam.png';
// ตั้งค่าจุดธง
var mylatlng = ใหม่ google.maps.latlng (weidu [j], jingdu [j]);
var h = chepaihao;
var tit = h.toString ();
var marker = ใหม่ google.maps.marker ({
ตำแหน่ง: mylatlng,
แผนที่: แผนที่
// ไอคอน: "http://google-maps-icons.googlecode.com/files/yellow08.png"
// ไอคอน: image, // ผ่านไอคอนคุณสามารถตั้งค่าไอคอนที่คุณต้องการแสดง หากคุณไม่ได้ตั้งค่าคุณจะแสดงไอคอนเริ่มต้นของ Google Map
ชื่อเรื่อง: ชื่อเรื่อง // ชื่อหมายถึงค่าที่จะแสดงบนเครื่องหมายโดยวางเมาส์ลงบนเครื่องหมาย
-
attachSecretMessage (marker, j, addre, lat, lng);
-
-
ฟังก์ชั่น attainsecretMessage (เครื่องหมาย, หมายเลข, addre1, lat1, lng1) {
// var message = ["this", "คือ", "The", "Secret", "Message"];
var infowindow = ใหม่ google.maps.infowindow (
{เนื้อหา: "<span style = 'font-size: 15px'> <b> ที่อยู่: </b>" + addre1 + "<br>" + "ละติจูดและลองจิจูด:" + lat1 + "," + lng1 + "</span>"
ขนาด: ใหม่ google.maps.size (50, 50)
-
// infowindow.setContent ("ที่อยู่:" +addre1 +"ลองจิจูด:" +lat1 +"lat:" +lng1);
// คลิกเพื่อป๊อปอัพหน้าต่างข้อมูล
google.maps.event.addlistener (marker, 'คลิก', function () {
infowindow.open (แผนที่, เครื่องหมาย);
-
-
</script>
รหัสแบ็กเอนด์ CS:
การคัดลอกรหัสมีดังนี้:
ใช้ระบบ
ใช้ System.collections.generic;
ใช้ System.linq;
ใช้ System.web;
ใช้ system.web.ui;
ใช้ System.web.ui.webcontrols;
การใช้ System.web.ui.htmlcontrols;
ใช้ System.data.sqlclient;
คลาสสาธารณะบางส่วนค่าเริ่มต้น 2: system.web.ui.page
-
สาธารณะสองเท่า [] la = ใหม่คู่ [25];
สาธารณะสองเท่า [] ln = ใหม่คู่ [25];
สาธารณะ int [] id = new int [25];
สตริงสาธารณะ [] addr = สตริงใหม่ [25];
หมายเลข int สาธารณะ;
void page_load ที่ได้รับการป้องกัน (ผู้ส่งวัตถุ EventArgs E)
-
String mycnnconnectionsTring1 = system.configuration.configurationManager.connectionStrings ["testConect"]. การเชื่อมต่อ; // สร้างสตริงการเชื่อมต่อ
SQLConnection mycnn1 = ใหม่ sqlconnection (mycnnconnectionstring1);
mycnn1.open ();
sqlcommand cmd1 = ใหม่ sqlcommand ("เลือก l_id, l_lantitude, l_longitude, l_address จากตำแหน่งล่าสุด", mycnn1);
sqldatareader dr1 = cmd1.executereader ();
int k2 = 0;
int k3 = 0;
int k4 = 0;
int k1 = 0;
// สตริง buf1 = "";
double buf2 = 0;
double buf3 = 0;
int buf4 = 0;
สตริง buf1 = "0";
ในขณะที่ (dr1.read ())
-
// lat
buf2 = (สองเท่า) dr1 ["l_lantitude"];
la [k2] = buf2;
K2 ++;
// lng
buf3 = (สองเท่า) dr1 ["l_longitude"]; /// ฐานข้อมูลจำเป็นต้องใช้ double เพื่ออ่านข้อมูลประเภท float-type
ln [k3] = buf3;
K3 ++;
// id
buf4 = (int) dr1 ["l_id"];
ID [K4] = BUF4;
K4 ++;
buf1 = dr1 ["l_address"]. toString ();
addr [k1] = buf1;
K1 ++;
-
หมายเลข = K4;
dr1.close ();
mycnn1.close ();
-
-