Jump to content


Photo

Google Map


  • Please log in to reply
4 replies to this topic

#1 lloydio

lloydio
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 03 May 2006 - 05:00 PM

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.

heres the code:

[!--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...l1-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.c...i&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

#2 ober

ober
  • Staff Alumni
  • Advanced Member
  • 5,337 posts
  • LocationEast Coast, USA

Posted 03 May 2006 - 05:06 PM

Where is the array of values coming from and how are you passing it?

Info: PHP Manual


#3 lloydio

lloydio
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 04 May 2006 - 08:39 AM

[!--quoteo(post=370952:date=May 3 2006, 06:06 PM:name=ober)--][div class=\'quotetop\']QUOTE(ober @ May 3 2006, 06:06 PM) View Post[/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.

#4 kenrbnsn

kenrbnsn
  • Staff Alumni
  • Advanced Member
  • 8,235 posts
  • LocationHillsborough, NJ, USA

Posted 04 May 2006 - 02:59 PM

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
<?php $settings[postcodes] = explode(',', $_GET['markercode']);

Ken

#5 lloydio

lloydio
  • New Members
  • Pip
  • Newbie
  • 3 posts

Posted 05 May 2006 - 09:02 AM

[!--quoteo(post=371279:date=May 4 2006, 03:59 PM:name=kenrbnsn)--][div class=\'quotetop\']QUOTE(kenrbnsn @ May 4 2006, 03:59 PM) View Post[/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
<?php $settings[postcodes] = explode(',', $_GET['markercode']);

Ken
[/quote]



Great ;) worked a treat, thank you very much




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users