dream02008 2013-12-05 16:24
浏览 45

Google Maps Marker Clusterer

I'm using the Google Maps clusterer along with the Google Maps API on Wordpress. I'm trying to combine the two together, and get different results each time. When I define my markers, the map will show them without the marker clusterers. When I don't define my markers, the map will show the marker clusterers for the example shown here: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/simple_example.html?compiled

Any idea what I'm doing wrong? Any help is appreciated!!

Here's my code:

<?php // Index template
get_header(); ?>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script src="<?php echo get_template_directory_uri(); ?>/js/data.json"></script>
<script src="<?php echo get_template_directory_uri(); ?>/js/markerclusterer.js"></script>
<script src="<?php echo get_template_directory_uri(); ?>/js/markerclusterer_compiled.js"></script>


<div class="twelve column">
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
            <div class="intro">
            </div>
            <?php the_content(); ?>
            <header class="clearfix"></header>

                <style type="text/css">
                      body {
                        margin: 0;
                        padding: 10px 20px 20px;
                        font-family: Arial;
                        font-size: 16px;
                      }

                      #map-container {
                        padding: 6px;
                        border-width: 1px;
                        border-style: solid;
                        border-color: #ccc #ccc #999 #ccc;
                        -webkit-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
                        -moz-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
                        box-shadow: rgba(64, 64, 64, 0.1) 0 2px 5px;
                        width: 600px;
                      }

                      #map {
                        width: 600px;
                        height: 400px;
                      }

                    </style>

                    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
                    <script type="text/javascript" src="../src/data.json"></script>
                    <script type="text/javascript">
                      var script = '<script type="text/javascript" src="../src/markerclusterer';
                      if (document.location.search.indexOf('compiled') !== -1) {
                        script += '_compiled';
                      }
                      script += '.js"><' + '/script>';
                      document.write(script);
                    </script>
                   <?php //Where WP Content Might Go? ?>    
                   <?php
                      // For creating multiple, customized loops.
                      // http://codex.wordpress.org/Class_Reference/WP_Query
                      $custom_query = new WP_Query('post_type=locations'); // exclude category 9
                      while($custom_query->have_posts()) : $custom_query->the_post(); ?>
                         <?php if(get_field('link')): ?>
                            <div>
                              <?php while(has_sub_field('link')): ?>
                                <div>
                                    <p><?php the_sub_field('url'); ?></p>
                                </div>
                              <?php endwhile; ?>
                            </div>
                          <?php endif; ?>
                      <?php endwhile; ?>
                      <?php wp_reset_postdata(); // reset the query ?>
                      <?php
                          function get_single_term($post_id, $taxonomy)
                          {
                            $terms = wp_get_object_terms($post_id, $taxonomy);
                            if(!is_wp_error($terms)) {
                              return '<a href="'.get_term_link($terms[0]->slug, $taxonomy).'">'.$terms[0]->name.'</a>';
                            }
                          }

                          $i = 0;

                          // For creating multiple, customized loops.
                          // http://codex.wordpress.org/Class_Reference/WP_Query
                              $custom_query = new WP_Query('post_type=location&posts_per_page=-1');
                              while($custom_query->have_posts()) : $custom_query->the_post();

                                $title = get_the_title(); // Location title
                                $map   = get_field('location'); // ACF location contains address and coordinates
                                $terms = strip_tags( get_the_term_list( $post->ID, 'distributors', '', ' & ' )); // Get distributor terms and rm links
                                $info  = '<strong>' . $title . '</strong><br>' . $map['address']; // Info window content
                                $link = get_field('link');
                                if($link){
                                  $info .= '<br><a href="http://'. $link .'">'. $link .'</a>';
                                }
                                $location[$i][0] = $title; // Store the post title
                                $location[$i][1] = $map['coordinates']; // Store the ACF coordinates
                                $location[$i][2] = json_encode($info); // Store info window content
                                $location[$i][3] = strip_tags( get_single_term( $post->ID, 'distributors' )); // Get first term for marker icon

                                $i ++;
                              endwhile; ?>
                              <?php wp_reset_postdata(); // reset the query ?>




                    <script type="text/javascript">
                      function initialize() {
                        var myLatLng = new google.maps.LatLng(41.583013,-93.63701500000002);
                        var bounds = new google.maps.LatLngBounds();
                            var styles = [
                              {
                                stylers: [
                                  { saturation: -99.9 }
                                ]
                              }
                            ];
                        var styledMap = new google.maps.StyledMapType(styles, {name: 'exile'});
                            var mapOptions = {
                              mapTypeId: 'roadmap',
                              center: myLatLng,
                              zoom: 3,
                              disableDefaultUI: false,
                              scrollwheel: true,
                              draggable: true
                            };
                        // Display a map on the page        
                        var map = new google.maps.Map(document.getElementById('map'), mapOptions);
                        var mc = new MarkerClusterer(map);
                        map.setTilt(45);
                        //Associate the styled map with the MapTypeId and set it to display.
                            map.mapTypes.set('exile', styledMap);
                            map.setMapTypeId('exile');  
                        // Marker icons
                            typeObject = {
                              "Others" : {
                                "icon" : new google.maps.MarkerImage('http://exilebrewing.com/site/img/beer-mug.png', new google.maps.Size(18,26), new google.maps.Point(0,0), new google.maps.Point(9,26)),
                                "shadow" : new google.maps.MarkerImage('http://maps.google.com/mapfiles/shadow50.png', new google.maps.Size(40,34))
                              }
                            }     

                        var markers = [
                        ["Exile Brewing Co", 41.583013,-93.63701500000002,"Others"],
                          <?php
                          if (count($location)>0) {
                            foreach ($location as $key => $value){
                              if ($key < (count($location)-1)){
                                echo '["' . $location[$key][0] . '",' . $location[$key][1] . ',"' . $location[$key][3] . '"], ' . "
";
                              } else {
                                echo '["' . $location[$key][0] . '",' . $location[$key][1] . ',"' . $location[$key][3] . '"]';
                              }
                            }
                          }
                          ?>
                        ];
                        for (var i = 0; i < 100; i++) {
                          var dataPhoto = data.photos[i];
                          var latLng = new google.maps.LatLng(dataPhoto.latitude,
                              dataPhoto.longitude);
                          var marker = new google.maps.Marker({
                            position: latLng
                          });
                          markers.push(marker);
                        }
                        var markerCluster = new MarkerClusterer(map, markers);

                        // Info Window Content
                        var infoWindowContent = [
                          ["<strong>Exile Brewing Co.</strong><br>1514 Walnut Street, Des Moines"],
                          <?php
                          if (count($location)>0) {
                            foreach ($location as $key => $value){
                              if ($key < (count($location)-1)) {
                                echo '[' . $location[$key][2] . '], ' . "
";
                              } else {
                                echo '[' . $location[$key][2] . ']';
                              }
                            }
                          }
                          ?>
                        ];
                         // Display multiple markers on a map
                         var infoWindow = new google.maps.InfoWindow(), marker, i;

                         // Loop through our array of markers & place each one on the map
                        for( i = 0; i < markers.length; i++ ) {
                              var position = new google.maps.LatLng(markers[i][1], markers[i][2]); // ACF coordinates
                              var icon = typeObject[markers[i][3]]['icon'];
                              var shadow = typeObject[markers[i][3]]['shadow'];
                              bounds.extend(position);
                                marker = new google.maps.Marker({
                                  position: position,
                                  map: map,
                                  title: markers[i][0],
                                  icon: icon,
                                  shadow: shadow
                                });

                             // Allow each marker to have an info window
                             google.maps.event.addListener(markers, 'click', (function(markers, i) {
                              return function() {
                                infoWindow.setContent(infoWindowContent[i][0]);
                                infoWindow.open(map, markers);
                              }
                            })(markers, i));
                            // Automatically center the map fitting all markers on the screen
                            //map.fitBounds(bounds);
                            }
                            // Override our map zoom level once our fitBounds function runs (Make sure it only runs once)
                            var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {
                               this.setZoom(15);
                               google.maps.event.removeListener(boundsListener);
                               });
                        };

                      google.maps.event.addDomListener(window, 'load', initialize);
                    </script>

                    <div id="map-container"><div id="map"></div></div>

        <footer class="clearfix"></footer>
    <?php endwhile;?>
    <?php endif; ?>
    </div>
</div>

<?php get_footer(); ?>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 个人网站被恶意大量访问,怎么办
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制