Dynadot Aftermarket: discover domain gems worth investing in. Visit our aftermarket.

Google map search box problem - Help!

Namecheap AuctionsNamecheap Auctions
SpaceshipSpaceship
SpaceshipSpaceship
Watch

AikenDrum

New Member
Impact
0
Hi,

I've successfully set up on my website the example geocoded googlemap with markers from here:

http://code.google.com/support/bin/a...y?answer=65622

I now want to add a search box to geocode a typed in location, and re-center the map on that location. The following code works fine:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Geocoding With a Map</title>
<script src="http://maps.google.co.uk/maps?file=api&v=2&key=ABQIAAAAX4g7w-cn0uZeONcdmA1HYBR30_VdjOSbYvp8XHZAJPWnMA2DJRRNtMqmbzS1zsu9lGThbHrg5l-qTQ" type="text/javascript"></script>
<script type="text/javascript">

var map = null;
var geocoder = null;

function load()
{
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(53.799637, -1.54911), 6);

geocoder = new GClientGeocoder();
}
}

function findAddress(anAddress)
{
if (geocoder)
{
geocoder.getLatLng(anAddress, function(aPoint)
{
if (!aPoint)
{
alert("Sorry, can't locate [" + anAddress + "]");
}
else
{
map.setCenter(aPoint, 13);
var elem = document.getElementById("latLng");
elem.innerHTML = aPoint.lat() + ", " + aPoint.lng();
}
});
}
}

</script>
</head>

<body onload="load()" onunload="GUnload()">
<form action="#" onsubmit="findAddress(this.address1.value); return false">
<p>
<input type="text" size="60" name="address1" value="Type in city/town/village or postcode" />
<input type="submit" value="Go!" />
</p>
<div id="map" style="width: 500px; height: 500px"></div>
<p>Latitude/Logitude: <span id="latLng">51.500789, -0.142264</span></p>

</form>
</body>
</html>


However, when I try to insert this code into the map with markers, it doesn't work. When the location is typed into the search box, the map does not re-center. I've looked at the code until I've gone cross-eyed, and I just cannot figure out why it doesn't work. If anyone can help, I'd be really grateful.

Thanks

Here's the non-working code:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps AJAX + MySQL/PHP Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAX4g7w-cn0uZeONcdmA1HYBR30_VdjOSbYvp8XHZAJPWnMA2DJRRNtMqmbzS1zsu9lGThbHrg5l-qTQ"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[

var iconBlue = new GIcon();
iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconBlue.iconSize = new GSize(12, 20);
iconBlue.shadowSize = new GSize(22, 20);
iconBlue.iconAnchor = new GPoint(6, 20);
iconBlue.infoWindowAnchor = new GPoint(5, 1);

var iconRed = new GIcon();
iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconRed.iconSize = new GSize(12, 20);
iconRed.shadowSize = new GSize(22, 20);
iconRed.iconAnchor = new GPoint(6, 20);
iconRed.infoWindowAnchor = new GPoint(5, 1);

var customIcons = [];
customIcons["restaurant"] = iconBlue;
customIcons["bar"] = iconRed;


function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(53.700637, -1.54911), 6);
geocoder = new GClientGeocoder();



GDownloadUrl("phpsqlajax_genxml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers.getAttribute("name");
var address = markers.getAttribute("address");
var type = markers.getAttribute("type");
var point = new GLatLng(parseFloat(markers.getAttribute("lat")),
parseFloat(markers.getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
}
});
}
}

function findAddress(anAddress)
{
if (geocoder)
{
geocoder.getLatLng(anAddress, function(aPoint)
{
if (!aPoint)
{
alert("Sorry, can't locate [" + anAddress + "]");
}
else
{
map.setCenter(aPoint, 13);
var elem = document.getElementById("latLng");
elem.innerHTML = aPoint.lat() + ", " + aPoint.lng();
}
});
}
}


function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
//]]>
</script>
</head>

<body onload="load()" onunload="GUnload()">
<form action="#" onsubmit="findAddress(this.address.value); return false">
<p>
<input type="text" size="60" name="address" value="" />
<input type="submit" value="Go!" />
</p>
<div id="map" style="width: 500px; height: 500px"></div>
<p>Latitude/Logitude: <span id="latLng">51.500789, -0.142264</span></p>

</form>
</body>
</html>
 
0
Close
The views expressed on this page by users and staff are their own, not those of NamePros.
GoDaddyGoDaddy
DomainEasy: flexible LTO options. Close more domain deals with financing.

We're social

Escrow.com
Spaceship
Domain Recover
CryptoExchange.com

NamePros updates

Switch between accounts
You can now stay logged in to more than one NamePros account in the same browser. Click your avatar, then "Accounts in this browser", to...
AIVikings
Catchy
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back