Jump to content

Google Map


lloydio

Recommended Posts

What i want to do is dynamicly plot the postcodes onto the map and the array to split on , from the query string.

how i would of thought it would of worked by having

$settings[postcodes] = array($_GET['markercode']);

and querystring ?markercode="BH1", "BH2", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4"

but doing it this way it just ignors the ,


please could anyone lend a hand.

[u]heres the code:[/u]

[!--quoteo--][div class=\'quotetop\']QUOTE[/div][div class=\'quotemain\'][!--quotec--]<?php



/////////////////////////////////////////////////////
// Google Maps API with Jibble UK Postcodes v1.0 //
// sebflipper Copyright 2005 //
// [a href=\"http://www.sebflipper.com\" target=\"_blank\"]http://www.sebflipper.com[/a] //
// //
// As Google Maps only works from longitude and //
// latitude decimal notations use this script to //
// work out marker positions using the first part //
// of the UK Postcode //
// //
// Please refer to readme.txt for more details //
// //
// Distributed under the terms of the //
// General Public License (GPL) See: //
// [a href=\"http://www.gnu.org/copyleft/gpl.html\" target=\"_blank\"]http://www.gnu.org/copyleft/gpl.html[/a] //
// //
// Google Maps and/or the Jibble UK Postcode //
// Database may operate under a different //
// licenses, please see their sites for info //
/////////////////////////////////////////////////////

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Config Area
// MySQL connection details
$settings[server] = 'geton2.gotadsl.co.uk';
$settings[db_name] = 'postcode';
$settings[db_user] = 'postcode';
$settings[db_pass] = 'postcode123123';

// Your Google Maps key (get one for free from: [a href=\"http://www.google.com/apis/maps/signup.html)\" target=\"_blank\"]http://www.google.com/apis/maps/signup.html)[/a]
$settings[google_maps_key] = 'ABQIAAAAjf0IkBr7AhZMIHENI_tmMxQnXaCp8Z41NECtBqyfmMrZtmeT1RQ_HfMypmP4Lkcc2TJw-l_tNA5qMg'; // Key for: [a href=\"http://127.0.0.1/\" target=\"_blank\"]http://127.0.0.1/[/a]

// Starting Postcode (Postcode to centerAndZoom from)
$settings[start_postcode] = $_GET['postcode'];
$settings[zoom_level] = "5";
$settings[div_style] = "width: 12em; style: font-size: small";

// Postcodes to show as markers (this would most likely come from your database or from the users $_GET or $_POST, but as an example I have fill out some postcodes)

//$settings[postcodes] = array($_GET['markercode']);











$settings[postcodes] = array("BH1", "BH2", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4");







//array("UB8", "UB7", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4")

$settings[postcode_html] = array($_GET['markertxt']);

// Longitude and Latitude Markers (if you need to use a more precise location)
$settings[long_lat] = array("-0.472219,51.509878");

$settings[long_lat_html] = array("West Drayton Station");

//////////////////////
// End of Config Area

// Connect to database
$db = mysql_connect($settings[server], $settings[db_user], $settings[db_pass]) or die("<hr>Unable to connect to database on '".$settings[server]."' with user '".$settings[db_user]."'<br />Please check your settings in this file");
mysql_select_db($settings[db_name],$db) or die("Please first create your database '".$settings[db_name]."'!"); ;

?>

<!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>
<style type="text/css">
<!--
body {
font-family: Arial, Helvetica, sans-serif;
font-size: small;
}
-->
</style>
<script src="http://maps.google.co.uk/maps?file=api&v=1&key=<?php echo $settings[google_maps_key]; ?>" type="text/javascript"></script>
</head>
<body>
<!-- Google Maps API with Jibble UK Postcodes v1.0 - sebflipper Copyright 2005 - [a href=\"http://www.sebflipper.com\" target=\"_blank\"]http://www.sebflipper.com[/a] !-->
<div id="map" style="width: 500px; height: 400px"></div>
<script type="text/javascript">
//<![CDATA[

// Load up Google Maps
var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
<?php
// Get starting cords
$sql_query = "SELECT * FROM `postcode_data` WHERE `postcode` LIKE '$settings[start_postcode]' LIMIT 0 , 1";

//echo $sql_query;

$result = mysql_query($sql_query,$db);
if ($data = mysql_fetch_array($result))
{
do
{
$longitude = $data[long_dec];
$latitude = $data[lat_dec];
} while ($data = mysql_fetch_array($result));
}

echo "map.centerAndZoom(new GPoint($longitude,$latitude), $settings[zoom_level]);\n\n";
?>

function createMarker(point,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function () {
marker.openInfoWindowHtml(html);
});
return marker;

}

<?php
// Check if there are any postcodes the same and merge there HTML content
$key_index_merge = -1;
foreach ($settings[postcodes] as $postcode)
{
$key_index_merge++;

$found_key = array_search($postcode, $settings[postcodes]);
if ($key_index_merge !== $found_key)
{
// Remove the key
unset($settings[postcodes][$found_key]);

// Take the HTML and add it to existing key

$new_key = array_search($postcode, $settings[postcodes]);
$settings[postcode_html][$new_key] = $settings[postcode_html][$new_key]."<br><!-- New Postcode !-->".$settings[postcode_html][$found_key];

// Remove the old HTML
unset($settings[postcode_html][$found_key]);
}
}
// Reindex arrays
$settings[postcodes] = array_values($settings[postcodes]);
$settings[postcode_html] = array_values($settings[postcode_html]);

// Count how many items are shown in each box
$key_index_count = -1;
foreach ($settings[postcode_html] as $postcode_html)
{
$key_index_count++;
$items = explode("<!-- New Postcode !-->", $postcode_html);
$no_items = count($items);
$settings[postcode_html][$key_index_count] = "<b>$no_items</b> location(s) found:<br>".$settings[postcode_html][$key_index_count];
}

// Postcode Markers
$key_index = -1;
//$settings[postcodes] = array_unique($settings[postcodes]);
foreach ($settings[postcodes] as $postcode)
{
$key_index++;

$sql_query = "SELECT * FROM `postcode_data` WHERE `postcode` LIKE '$postcode' LIMIT 0 , 1";
$result = mysql_query($sql_query,$db);
if ($data = mysql_fetch_array($result))
{
do
{
$longitude = $data[long_dec];
$latitude = $data[lat_dec];
} while ($data = mysql_fetch_array($result));
}

echo "\nvar point = new GPoint($longitude,$latitude);\n";
echo "var marker = createMarker(point, \"<div style='$settings[div_style]'>".$settings[postcode_html][$key_index]."</div>\");\n";
echo "map.addOverlay(marker);\n";
}

// Longitude and Latitude Markers
$key_index = -1;
foreach ($settings[long_lat] as $long_lat)
{
$key_index++;

echo "\nvar point = new GPoint($long_lat);\n";
echo "var marker = createMarker(point, \"<div style='$settings[div_style]'>".$settings[long_lat_html][$key_index]."</div>\");\n";
echo "map.addOverlay(marker);\n";
}
?>

//]]>
</script>
</body>
</html>[/quote]


thanks
Lloyd
Link to comment
Share on other sites

[!--quoteo(post=370952:date=May 3 2006, 06:06 PM:name=ober)--][div class=\'quotetop\']QUOTE(ober @ May 3 2006, 06:06 PM) [snapback]370952[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Where is the array of values coming from and how are you passing it?
[/quote]

well i would like the array of values to come from a querystring. if the array data is hard coded then it will work.

[!--quoteo--][div class=\'quotetop\']QUOTE[/div][div class=\'quotemain\'][!--quotec--]$settings[postcodes] = array("BH1", "BH2", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4");[/quote]

if i use

[!--quoteo--][div class=\'quotetop\']QUOTE[/div][div class=\'quotemain\'][!--quotec--]$settings[postcodes] = array($_GET['markercode']);[/quote]

and had "BH1", "BH2", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4" in my querystring. then the whole line "BH1", "BH2", "UB3", "UB4", "UB4", "UB4", "UB5", "UB4" appears first in the array without being broken up by the , .

im thinking i need to convert the querystring result into a format the array can use.
Link to comment
Share on other sites

Where is the URL being generated? Is it coming from a form? Another script?

Having quoted strings in a URL is fairly unusual. The url should look like
[!--quoteo--][div class=\'quotetop\']QUOTE[/div][div class=\'quotemain\'][!--quotec--]?markercode=BH1, BH2, UB3, UB4, UB4, UB4, UB5, UB4[/quote]
The the processing script would see that value of $_GET['markercode'] is the string "BH1, BH2, UB3, UB4, UB4, UB4, UB5, UB4".
Then you could do
[code]<?php $settings[postcodes] = explode(',', $_GET['markercode']);[/code]

Ken
Link to comment
Share on other sites

[!--quoteo(post=371279:date=May 4 2006, 03:59 PM:name=kenrbnsn)--][div class=\'quotetop\']QUOTE(kenrbnsn @ May 4 2006, 03:59 PM) [snapback]371279[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Where is the URL being generated? Is it coming from a form? Another script?

Having quoted strings in a URL is fairly unusual. The url should look like

The the processing script would see that value of $_GET['markercode'] is the string "BH1, BH2, UB3, UB4, UB4, UB4, UB5, UB4".
Then you could do
[code]<?php $settings[postcodes] = explode(',', $_GET['markercode']);[/code]

Ken
[/quote]



Great ;) worked a treat, thank you very much
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.