গুগল ম্যাপ ব্যবহার করার সময় কীভাবে ডেটা আপত্তি করবেন?


9

আমি এমন একটি গুগল ম্যাপে (এপিআই-এর v3) কাজ করছি যা 120 মার্কার বা তার জন্য পরিকল্পনা করছে (বা শীঘ্রই এটি করবে) - দেখুন http://www.mediwales.com/mapping । আপনি যদি উত্সটি দেখতে পান তবে মানচিত্রের ডেটা সমস্ত দেখার জন্য, এটি কি এটি লুকানো সম্ভব?

আমি যে কোডটি মানচিত্র তৈরি করছি তা সম্পর্কে উদ্বিগ্ন নই, কেবলমাত্র ডেটা। ডেটা ওয়ার্ডপ্রেস সেমি থেকে নেওয়া হয়েছে।

এখানে কোড তৈরি করা হয়েছে যা এটি সমস্ত তৈরি করছে:

<script type="text/javascript"> 
(function() { 

window.onload = function() { 
 var mc;
// Creating an object literal containing the properties we want to pass to the map 
var options = { 
zoom: 10, 
center: new google.maps.LatLng(52.40, -3.61), 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

// Creating the map 
var map = new google.maps.Map(document.getElementById('map'), options); 

// Creating a LatLngBounds object 
var bounds = new google.maps.LatLngBounds(); 

// Creating an array that will contain the addresses 
var places = []; 

// Creating a variable that will hold the InfoWindow object 
var infowindow; 
mc = new MarkerClusterer(map);
<?php
$pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order'));
$popup_content = array();
foreach($pages as $post)
    {
    setup_postdata($post);
    $fields = get_fields(); 
    $popup_content[] = '<p>'.$fields->company_name.'</p><img src="'.$fields->company_logo.'" /><br /><br /><a href="'.get_page_link($post->ID).'">View profile</a>';
    $comma = ", ";
    $full_address = "{$fields->address_line_1}{$comma}{$fields->address_line_2}{$comma}{$fields->address_line_3}{$comma}{$fields->post_code}";
    $address[] = $full_address;
    }
wp_reset_query();
echo 'var popup_content = ' . json_encode($popup_content) . ';';
echo 'var address = ' . json_encode($address) . ';';
?>

var geocoder = new google.maps.Geocoder(); 

var markers = [];

// Adding a LatLng object for each city  
for (var i = 0; i < address.length; i++) { 
    (function(i) { 
        geocoder.geocode( {'address': address[i]}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                places[i] = results[0].geometry.location;

                // Adding the markers 
                var marker = new google.maps.Marker({position: places[i], map: map});
                markers.push(marker);
                mc.addMarker(marker);

                // Creating the event listener. It now has access to the values of i and marker as they were during its creation
                google.maps.event.addListener(marker, 'click', function() {
                    // Check to see if we already have an InfoWindow
                    if (!infowindow) {
                        infowindow = new google.maps.InfoWindow();
                    }

                    // Setting the content of the InfoWindow
                    infowindow.setContent(popup_content[i]);

                    // Tying the InfoWindow to the marker 
                    infowindow.open(map, marker);
                });

                // Extending the bounds object with each LatLng 
                bounds.extend(places[i]); 

                // Adjusting the map to new bounding box 
                map.fitBounds(bounds) 
            } else { 
            alert("Geocode was not successful for the following reason: " + status); 
            }

        });

    })(i);

} 
var markerCluster = new MarkerClusterer(map, markers); 
} 
})
(); 
</script>

আপনি কোন তথ্য উল্লেখ করছেন? popup_contentএবং address?
সাসা আইভেটিক

সম্ভব হলে @ সাসাইভেটিক উভয়কেই অনুসরণ করুন।
রব

উত্তর:


7

আপনি একটি ডেটাবেসে আপনার ডেটা সংরক্ষণ করতে পারেন ( ফিউশন টেবিলগুলি একটি দ্রুত সমাধান)।

গুগল ম্যাপের একটি টিউটোরিয়াল রয়েছে যা আপনাকে মাইএসকিউএল দিয়ে কীভাবে করতে হয় তা দেখায় (তবে যে কোনও ডাটাবেস হতে পারে) http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

আপনি কোনও ডাটাবেস ব্যাক-এন্ড ব্যবহার করতে চাইলে নিরাপদ এবং অবরুদ্ধ হয়ে উঠতে পারেন।

দেখে মনে হচ্ছে আপনি ফ্লাইতে আপনার ডেটা জিওকোড করেছেন - আপনি প্রতি আইপি ঠিকানায় 1000 অনুরোধের মধ্যে সীমাবদ্ধ থাকবেন।

জিওকোড করতে আরও দক্ষ হবে এবং তারপরে রিয়েলটাইমের ডেটাবেস আপডেট করবে।


1
ফিউশন টেবিলের জন্য দুর্দান্ত পরামর্শ! ফিউশন টেবিলগুলির একটি জিওকোডিং সীমা রয়েছে, যদিও আমি এখনই এটি প্রত্যাহার করতে পারি না তবে এটি API সীমা থেকে অনেক বেশি। কেবলমাত্র অপূর্ণতা হ'ল আপনাকে আপনার ওয়ার্ডপ্রেস ডেটা ফিউশন টেবিলের সাথে সিঙ্ক করতে হবে (অথবা পর্যায়ক্রমে আপনার ওয়ার্ডপ্রেস সাইটে ফিউশন টেবিল ডেটা ব্যবহার করতে হবে)।
সাসা আইভেটিক

এটি একটি মহান ধারণা। সম্প্রতি এপিআই সীমা পরিবর্তন হয়েছে। আমি স্থানের জন্য পৃথক উত্তর হিসাবে বিশদ লিখছি, তবে @ ম্যাপার্জ সত্যিকারের উত্তরটি দিয়েছেন, কেবল নিশ্চিত করতে চান যে আমার অনুলিপিটি কপিরাইট হিসাবে ধরা পড়ে না!
এলি ক্যাসেলম্যান

@ ম্যাপের্জ এটি অবশ্যই আমি যে দিকে যেতে চাই সেটাই ... যদি আমি জানতাম কীভাবে! ভাবুন আমার সম্ভবত কোডের কয়েকটি উদাহরণের প্রয়োজন হবে ... আমি একটি অনুগ্রহ যুক্ত করব।
রব

4

আপনি প্রকৃতপক্ষে popup_contentএবং addressব্যবহারকারীর সামগ্রীগুলি গোপন করতে পারবেন না , কেবলমাত্র কোনও কারণ যা কোনও ওয়েব পৃষ্ঠায় প্রেরণ করা হয় তা শেষ ব্যবহারকারীর কাছে পরিষ্কারভাবে দৃশ্যমান। লোড-টাইমে এটিকে ডাম্প করার পরিবর্তে, আপনি মানচিত্রের ক্লিকের জন্য এ্যাসিঙ্ক অনুরোধটি করতে পারেন। আপনার clickহ্যান্ডলারের কার্যক্রমে আপনি পপআপ_কন্টেন্টের জন্য পিএইচপি পৃষ্ঠা থেকে একটি অনুরোধ করতে চান [i], এবং অনুরোধটি শেষ হয়ে গেলে তথ্য উইন্ডোটি খুলুন (পর্যায়ক্রমে, লোডিং ... পাঠ্যের সাথে সাথে উইন্ডোটি সরাসরি খুলুন এবং তারপরে পাঠ্যটি আপডেট করুন) । আপনি ঠিক একই পদ্ধতিতে ঠিকানাগুলি পরিচালনা করতে পারেন।

দ্রষ্টব্য: এই সমাধানটি এখনও ব্যবহারকারীর কাছ থেকে সামগ্রীটি আড়াল করে না, এটি কেবল লোডিংয়ে বিলম্ব করে যাতে সমস্ত ডেটা তাত্ক্ষণিকভাবে উপস্থিত না হয়। এটি আপনার পারফরম্যান্সে নেতিবাচক প্রভাব ফেলবে।

অন্য বিকল্প হিসাবে, আপনি কোনও উপায়ে ডেটা অবলম্বন করতে পারেন। আপনি লোডের উপর একটি পৃথক জাভাস্ক্রিপ্ট ফাইলটিতে ডেটা আউটপুটও করতে পারেন, যখন ব্যবহারকারী উত্স দেখার জন্য ক্লিক করেন তখন তা তত্ক্ষণাত দৃশ্যমান হয় না। আবার, তথ্যটি ব্যবহারকারীর কাছ থেকে আসলে লুকানো থাকে না; এটি সহজ সরল দৃষ্টিকোণ থেকে সরানো হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.