hi all, i am working on online food ordering project. restaurant create zones (circles based on miles as radies) to delivery the food. comapines registerd for food ordering. the company emplyees select there company we must display the restaurnt (Which are contaning this company in there zones).
any idea please help me.

thanks in advance.

Dani AI

Generated

A concise plan to solve the problem described by : store each restaurant as (latitude, longitude, radius_in_meters). When an employee selects a company, geocode the company address once and test that company point against each restaurant circle. Two practical approaches follow — server-side (accurate, good for many restaurants) and client-side (easy for small sets). Note that ’s map example shows how to place markers; for containment checks it is simpler and more reliable to compute spherical distance and compare to the restaurant radius.

Server-side (recommended for production): prefilter by a fast bounding box (uses indexed range scans) then apply the Haversine formula for exact distance. Example PHP Haversine function (returns meters):

function haversineMeters($lat1,$lng1,$lat2,$lng2){
  $R = 6371000; // earth radius in meters
  $dLat = deg2rad($lat2 - $lat1);
  $dLng = deg2rad($lng2 - $lng1);
  $a = sin($dLat/2)*sin($dLat/2) + cos(deg2rad($lat1))*cos(deg2rad($lat2))*sin($dLng/2)*sin($dLng/2);
  return 2*$R*asin(min(1,sqrt($a)));
}

Example SQL pattern (bounding box + Haversine in SELECT/HAVING). Convert miles to meters with 1 mile = 1609.344 meters. Use the bounding box to reduce candidates before the expensive trig.

Client-side (quick proof-of-concept): with Google Maps JavaScript API v3 use the geometry library:

var company = new google.maps.LatLng(companyLat, companyLng);
var rest = new google.maps.LatLng(restLat, restLng);
var distance = google.maps.geometry.spherical.computeDistanceBetween(company, rest); // meters
if(distance <= restRadiusMeters){ /* show restaurant */ }

Performance and production tips: store radii in meters, index latitude/longitude columns, cache geocoded company locations, and for large datasets use a spatial index or GIS extension (PostGIS / spatial features) to do the heavy lifting. Use the client geometry method only to validate or draw on maps — do the filtering on the server for correctness and scalability.

Recommended Answers

All 2 Replies

(You can run this on localhost also)


You'll need to confirm registration by clicking on link provided by you via email, at which time the API key will be provided to you. Paste this key into a text file, as you'll need to integrate it into the scripts used to create the maps.

Step 1: Create Database named "gmap".

Step 2: Create Table (copy the below code and execute in query window)

Code:
-- phpMyAdmin SQL Dump
-- version 3.1.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 08, 2010 at 06:50 PM
-- Server version: 5.1.30
-- PHP Version: 5.2.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `gmap`
--

-- --------------------------------------------------------

--
-- Table structure for table `province`
--

CREATE TABLE IF NOT EXISTS `province` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `province` varchar(125) NOT NULL,
  `code` varchar(5) NOT NULL,
  `area` varchar(45) DEFAULT NULL,
  `latitude` float DEFAULT NULL,
  `longitude` float DEFAULT NULL,
  `pincode` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=108 ;

--
-- Dumping data for table `province`
--

INSERT INTO `province` (`id`, `province`, `code`, `area`, `latitude`, `longitude`, `pincode`) VALUES
(1, 'india', 'IN', 'Jamnagar', 22.0247, 69.896, 361006),
(2, 'India', 'IN', 'Bhavnagar', 21.7491, 72.0882, 364740),
(3, 'India', 'IN', 'Surat', 21.2242, 72.8284, 395010),
(4, 'India', 'IN', 'Rajkot', 22.3279, 70.8292, 360001),
(5, 'India', 'IN', 'North West Delhi', 28.6586, 77.2308, 110006);

Step 3: Create a file named "map.php" and copy the below code in it.now run php file on localhost.

Code:
<?php

    mysql_connect("localhost","root");
    mysql_select_db("gmap");//connection with database
?>
<html>
<head>
<?php 
    $google_key = ''; //Your Key 
?>
<script src="<?php echo $google_key;?>"
        type="text/javascript">
</script>

<script type="text/javascript">

var newpoints = new Array();

//set The marker size and image
icon0 = new GIcon();
icon0.image = "http://www.google.com/mapfiles/marker.png";
icon0.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon0.iconSize = new GSize(20, 34);
icon0.shadowSize = new GSize(37, 34);
icon0.iconAnchor = new GPoint(9, 34);
icon0.infoWindowAnchor = new GPoint(9, 2);
icon0.infoShadowAnchor = new GPoint(18, 25);

<?php
    
            //Fire queries to retrive the location data for database
            $gmap_city_sql="SELECT * FROM province WHERE id='2'";
            $gmap_city_result=mysql_query($gmap_city_sql) or die(mysql_error());
            $row=mysql_fetch_object($gmap_city_result);
            

            //Set the Map Lat and Log that is retrieved from database
            $i=0;
             echo "newpoints[{$i}]= new Array ({$row->latitude},{$row->longitude},icon0,'','<b>".addslashes($row->province).", {$row->code}</b><br>".addslashes($row->area)."');\n";
?>

    //Initilize the Map
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));//get reference of div 
        map.setCenter(new GLatLng(22.4642600,70.0690540),6);//Set Center Point as your Center Location
        map.addControl(new GSmallMapControl()); //add Map Movement control
        map.addControl(new GMapTypeControl()); //Add MapType Control In Our MAP
        map.addMapType(G_SATELLITE_3D_MAP); // Set Default MapType

       // for(var i = 0; i < newpoints.length; i++) {
            var point = new GPoint(newpoints[0][1],newpoints[0][0]);
            var popuphtml = newpoints[0][4] ;
            var marker = createMarker(point,newpoints[0][2],popuphtml);
            map.addOverlay(marker);
        //}
      }
    }

    //function to create Marker
    function createMarker(point, icon, popuphtml) {
        var popuphtml = '<div id="popup">' + popuphtml + '</div>';
        var marker = new GMarker(point, icon);
         
         marker.openInfoWindowHtml(popuphtml); //Display Marker on Map
        
        
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(popuphtml);
        });
        return marker;
    }

</script>
</head >

<body onLoad="initialize()" >
    <div align="center"><div id="map_canvas" style="width: 400px; height: 400px"></div></div>
    <!--You can reduce the size of map by decresing the height and width value of <div> tag-->
</body>
</html>

Executing this script from a Web server produces the following map 




Step 4: You can customized the map view and database location info.

it is code till you not understand then you
refear file i attach
then also you not undersatand

then you refear www.Hackforums.net site in this site tutorial is avaliable ok.
this code work defineately beacuse it work in my site

thanks for reply, but i want to create circles google maps, do you have any idea, help me .

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.