Я не могу разобраться с помощью API Google Maps.Я пытаюсь отобразить маркеры только для тех элементов xml, которые соответствуют тому, какой адрес пользователь ввел в поле ввода.
Мой XML-файл выглядит следующим образом:
<rentalProperties>
<property available="yes" contact="0423020892">
<type>house</type>
<price>800</price>
<address>
<streetNo>116</streetNo>
<street>Warrigal Road</street>
<suburb>Camberwell</suburb>
<state>VIC</state>
<zipcode>3124</zipcode>
</address>
<numberOfBedrooms>4</numberOfBedrooms>
<description>Ideal for the familly...</description>
</rentalProperties>
Я тоже сбит с толкуоб использовании geocoder.getLatLng () для преобразования адреса поля ввода в значения lat и long.Вот мой текущий код JavaScript.
var map = null;
var geocoder = null;
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
function load()
{
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl());
geocoder = new GClientGeocoder();
geocoder.getLatLng("Melbourne", function(point){map.setCenter(point, 15)});
placeMarkers();
}
}
function addMarker(){
var street = document.getElementById("street").value;
var suburb = document.getElementById("suburb").value;
var address = street + suburb;
geocoder = new GClientGeocoder();
geocoder.getLatLng(address, function(point) {
if (!point) {
alert(address + " not found");
}
else{
map.setCenter(point, 12);
map.addOverlay(createMarker(point, address));
//saveMarker(point, address);
}
});
}
function placeMarkers() //loading up the XML file
{
GDownloadUrl("http://mercury.it.swin.edu.au/hit3324/7186975/Assignment3/data/apartment.xml", function(data, responseCode) {
if(responseCode == 200){
var xml = GXml.parse(data); //convert the data to an XML DOM fragment; will get from cache if not cleared
var markers = xml.documentElement.getElementsByTagName("property"); // get the marker elements in the data
for (var i = 0; i < markers.length; i++) {
var xmlStNo = xml.documentElement.getElementsByTagName("streetNo");
var xmlStreet = xml.documentElement.getElementsByTagName("street");
var xmlSuburb = xml.documentElement.getElementsByTagName("suburb");
var xmlAddress = xmlStNo + xmlStreet + xmlSuburb;
geocoder = new GClientGeocoder();
var point = geocoder.getLatLng(xmlAddress, function(point));
map.setCenter(point, 12); //fails if this not used
map.addOverlay(createMarker(point, markers[i].getAttribute("address")));
}
}
else if(responseCode == -1) {
alert("Data request timed out. Please try later.");
}
else {
geocoder = new GClientGeocoder();
geocoder.getLatLng("Paris", function(point){map.setCenter(point, 13)});
}
});
}
function createMarker(point, address) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(address); });
return marker;
}
Кроме того, если бы я проделал это долгий путь, и была бы упрощенная версия, которая была бы великолепна.Любая помощь могла бы быть полезна.