গুগলের সমাধান:
সারণী তৈরি করা হচ্ছে
আপনি যখন মাইএসকিউএল টেবিলটি তৈরি করেন, আপনি ল্যাট এবং এলএনজি বৈশিষ্ট্যগুলিতে বিশেষ মনোযোগ দিতে চান। গুগল ম্যাপের বর্তমান জুম ক্ষমতা সহ, দশমিকের পরে আপনার কেবল 6 সংখ্যক নির্ভুলতার প্রয়োজন। আপনার টেবিলের জন্য প্রয়োজনীয় স্টোরেজ স্থানটি সর্বনিম্ন রাখতে, আপনি উল্লেখ করতে পারেন যে ল্যাট এবং এলএনজি বৈশিষ্ট্যগুলি আকারের (10,6) ভাসমান are এটি ক্ষেত্রগুলিকে দশমিকের পরে digit ডিজিট সংরক্ষণ করতে দেয় এবং দশমিকের আগে 4 অঙ্ক পর্যন্ত, যেমন -123.456789 ডিগ্রি পূর্বে। প্রাথমিক কী হিসাবে পরিবেশন করতে আপনার টেবিলটিতে একটি আইডি বৈশিষ্ট্যও থাকা উচিত।
CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL
) ENGINE = MYISAM ;
টেবিলের জনসংখ্যা
টেবিলটি তৈরি করার পরে, এটি ডেটা দিয়ে এটি জনপ্রিয় করার সময়। নীচে সরবরাহিত নমুনা তথ্যটি আমেরিকা যুক্তরাষ্ট্র জুড়ে ছড়িয়ে ছিটিয়ে থাকা প্রায় 180 টি পিজারিয়ার জন্য। পিএইচপিএমআইএডমিনে, আপনি সিএসভি (কমা-বিচ্ছিন্ন মান) সহ বিভিন্ন ফাইল ফর্ম্যাট আমদানি করতে ইমপোর্ট ট্যাব ব্যবহার করতে পারেন। মাইক্রোসফ্ট এক্সেল এবং গুগল স্প্রেডশিট উভয়ই সিএসভি ফর্ম্যাটে রফতানি করে, যাতে আপনি স্প্রেডশিটগুলি থেকে মাইএসকিউএল টেবিলগুলিতে সিএসভি ফাইলগুলি রফতানি / আমদানির মাধ্যমে ডেটা স্থানান্তর করতে পারেন।
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Frankie Johnnie & Luigo Too','939 W El Camino Real, Mountain View, CA','37.386339','-122.085823');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Amici\'s East Coast Pizzeria','790 Castro St, Mountain View, CA','37.38714','-122.083235');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Kapp\'s Pizza Bar & Grill','191 Castro St, Mountain View, CA','37.393885','-122.078916');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Round Table Pizza: Mountain View','570 N Shoreline Blvd, Mountain View, CA','37.402653','-122.079354');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Tony & Alba\'s Pizza & Pasta','619 Escuela Ave, Mountain View, CA','37.394011','-122.095528');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`) VALUES ('Oregano\'s Wood-Fired Pizza','4546 El Camino Real, Los Altos, CA','37.401724','-122.114646');
মাইএসকিউএল সহ লোকেশন সন্ধান করা হচ্ছে
প্রদত্ত অক্ষাংশ / দ্রাঘিমাংশের নির্দিষ্ট ব্যাসার্ধের দূরত্বের মধ্যে থাকা আপনার চিহ্নিতকারীদের সারণিতে অবস্থানগুলি সন্ধান করতে, আপনি হ্যাভারসাইন সূত্রের ভিত্তিতে একটি নির্বাচন বাছাই করতে পারেন। হাভারসাইন সূত্রটি সাধারণত একটি গোলকের দুই জোড় স্থানাঙ্কের মধ্যে দুর্দান্ত-বৃত্তের দূরত্বগুলি গণনার জন্য ব্যবহৃত হয়। একটি গভীরতর গাণিতিক ব্যাখ্যা উইকিপিডিয়া দ্বারা দেওয়া হয়েছে এবং প্রোগ্রামিং সম্পর্কিত যা সূত্রের একটি ভাল আলোচনা চলমান টাইপের সাইটে রয়েছে।
এখানে এসকিউএল বিবৃতিটি নিকটস্থ 20 টি অবস্থানের সন্ধান করবে যা 37, -122 স্থানাঙ্কের 25 মাইল ব্যাসার্ধের মধ্যে রয়েছে। এটি সেই সারির অক্ষাংশ / দ্রাঘিমাংশ এবং লক্ষ্য অক্ষাংশ / দ্রাঘিমাংশের ভিত্তিতে দূরত্ব গণনা করে এবং তারপরে কেবল সারিগুলির জন্য জিজ্ঞাসা করে যেখানে দূরত্বের মান 25 এর চেয়ে কম হয়, পুরো ক্যোয়ারিকে দূরত্বে অর্ডার করে এবং 20 টি ফলাফলের মধ্যে সীমাবদ্ধ করে। মাইলের পরিবর্তে কিলোমিটার অনুসন্ধান করতে, 3959 প্রতিস্থাপন করুন 6371 দিয়ে।
SELECT
id,
(
3959 *
acos(cos(radians(37)) *
cos(radians(lat)) *
cos(radians(lng) -
radians(-122)) +
sin(radians(37)) *
sin(radians(lat )))
) AS distance
FROM markers
HAVING distance < 28
ORDER BY distance LIMIT 0, 20;
এটি হ'ল 28 মাইলেরও কম দূরত্বে অক্ষাংশ এবং দ্রাঘিমাংশ সন্ধান করা।
আর একটি হ'ল তাদেরকে ২৮ থেকে ২৯ মাইল দূরত্বের মধ্যে খুঁজে পাওয়া যাবে:
SELECT
id,
(
3959 *
acos(cos(radians(37)) *
cos(radians(lat)) *
cos(radians(lng) -
radians(-122)) +
sin(radians(37)) *
sin(radians(lat )))
) AS distance
FROM markers
HAVING distance < 29 and distance > 28
ORDER BY distance LIMIT 0, 20;
https://developers.google.com/maps/articles/phpsqlsearch_v3#creating-the-map