Я работал на карте эти два дня, немного кода JS и различные ловушки. В первый раз, когда я вступил в контакт с JS, есть все виды трудностей. Давайте обобщу исследование в последние несколько дней и попросим трюки.
Используйте закрытие у слушателей событий
При выполнении слушателей событий часто желательно прикрепить частные и постоянные данные к объекту. JavaScript не поддерживает «частные» данные экземпляра, но поддерживает закрытия, которые позволяют внутренним функциям получить доступ к внешним переменным. У слушателей событий закрытие идеально подходит для доступа к переменным, которые обычно не прикрепляются к предметам, которые возникают.
В следующем примере используется закрытие функции у слушателя событий, чтобы назначить зашифрованные сообщения на набор тегов. Нажатие на каждый тег увидит часть зашифрованного сообщения, которое не включено в сам тег.
Кода -копия выглядит следующим образом:
карта var;
функция инициализировать () {
var mylatlng = new Google.maps.latlng (-25.363882,131.044922);
var mapoptions = {
Увеличение: 4,
Центр: mylatlng,
Maptypeid: Google.maps.maptypeid.roadmap
}
map = new Google.maps.map (document.getElementByid ("map_canvas"), mapoptions);
// Добавить 5 маркеров на карту в случайных местах.
var southwest = new Google.maps.latlng (-31.203405,125.244141);
var northeast = new Google.maps.latlng (-25.363882,131.044922);
var bounds = new 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 () + latpan * math.random (),
Southwest.lng () + lngspan * math.random ());
var marker = new Google.maps.marker ({
позиция: расположение,
Карта: карта
});
var j = i + 1;
marker.settitle (j.tostring ());
AttachSecretMessage (Marker, I);
}
}
// Пять маркеров показывают секретное сообщение при нажатии
// но это сообщение не находится в данных экземпляра маркера.
Функция ATTRACESECRETMESSAGE (Marker, Number) {
var message = ["this", "is", ",", "secret", "message"];
var Infowindow = new Google.maps.infowindow (
{content: сообщение [номер],
Размер: новый google.maps.size (50,50)
});
google.maps.event.addlistener (marker, 'click', function () {
Infowindow.open (Map, Marker);
});
}
Этот код был скопирован с официального числа Google
Затем я хочу прочитать информацию о широте и долготе и адресах из базы данных, отметьте ее на карте Google и нажмите, чтобы отметить ее, чтобы появиться.
На реализацию многоточечных аннотаций можно ссылаться на приведенный выше код
Кода -копия выглядит следующим образом:
<script type = "text/javascript">
карта var;
window.onload = function load () {
var number = '< %= number %>'; // Получить значение количества Pubilc на фоне CS
var address = new Array ()
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%>'];
// предупреждение (WEI);
< %} %>
var latlng = new Google.maps.latlng (weidu [0], jingdu [0]);
// var mylatlng = new Google.maps.latlng (25.273566, 110.290195);
var myoptions = {
Увеличение: 8,
Центр: latlng,
Maptypeid: Google.maps.maptypeid.roadmap
};
map = new Google.maps.map (document.getElementByid ("map_canvas"), myoptions); //// инициализируя экземпляр карты
for (var j = 0; j <номер; j ++) // Я застрял здесь в течение длительного времени, потому что тип JS только var; Я запутал JS и CS и использовал его до тех пор, пока « % %>. На самом деле, простой JS не нужен, это почти то же самое, что C
{
var lat = weidu [j];
var lng = jingdu [j];
var address = address [j];
var chepaihao = chepai [j];
// alert (j);
// предупреждение (лат);
// var Image = 'image/webcam.png';
// Установить точку флага
var mylatlng = new google.maps.latlng (weidu [j], jingdu [j]);
var h = chepaihao;
var tit = h.tostring ();
var marker = new Google.maps.marker ({
позиция: mylatlng,
Карта: карта,
// значок: "http://google-maps-icons.googlecode.com/files/yellow08.png",
// значок: Изображение, // Через значок вы можете установить значок, который хотите отобразить. Если вы не установите его, вы отобразите значок по умолчанию карты Google.
Название: заголовок // заголовок означает значение, которое будет отображаться на маркере, путем размещения мыши на маркер.
});
ATTRACESECRETMESSAGE (Marker, J, Addre, LAT, LNG);
}
}
Функция ATTRACESECRETMESSAGE (MARKER, NUMER, ADDRE1, LAT1, LNG1) {
// var message = ["this", "is", ",", "secret", "message"];
var Infowindow = new Google.maps.infowindow (
{content: "<span style = 'font-size: 15px'> <b> адрес: </b>" + addRe1 + "<br>" + "широта и долгота:" + lat1 + "," + lng1 + "</span>",
Размер: новый google.maps.size (50, 50)
});
// InfoWindow.SetContent ("Адрес:" +addRe1 +"Londitude:" +lat1 +"lat:" +lng1);
// Нажмите, чтобы вспять информационное окно
google.maps.event.addlistener (marker, 'click', function () {
Infowindow.open (Map, Marker);
});
}
</script>
CS Backend Code:
Кода -копия выглядит следующим образом:
Использование системы;
Использование System.collections.generic;
Использование System.linq;
Использование System.Web;
Использование System.Web.UI;
Использование System.Web.UI.WebControls;
Использование System.web.ui.htmlControls;
Использование System.data.sqlClient;
Общественный частичный класс Default2: System.Web.UI.PAGE
{
public Double [] la = новый двойной [25];
public Double [] ln = new Double [25];
public int [] id = new Int [25];
public String [] addr = new String [25];
Общественное int число;
Защищенная void page_load (отправитель объекта, Eventargs E)
{
string mycnnconnectionstring1 = System.configuration.configurationManager.connectionStrings ["testConect"]. ConnectionString; // Создать строку подключения
SqlConnection mycnn1 = новый sqlConnection (mycnnconnectionString1);
mycnn1.open ();
Sqlcommand cmd1 = new sqlcommand ("select 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;
// string buf1 = "";
Double BUF2 = 0;
Double BUF3 = 0;
int buf4 = 0;
String buf1 = "0";
While (dr1.read ())
{
// лат
buf2 = (двойной) dr1 ["l_lantitude"];
la [k2] = buf2;
K2 ++;
// СПГ
buf3 = (Double) dr1 ["l_longitude"]; /// База данных должна использовать двойной для чтения данных типа плавания
ln [k3] = buf3;
K3 ++;
//идентификатор
buf4 = (int) dr1 ["l_id"];
id [k4] = buf4;
K4 ++;
buf1 = dr1 ["l_address"]. toString ();
addr [k1] = buf1;
K1 ++;
}
число = k4;
dr1.close ();
mycnn1.close ();
}
}