/** * Get WP Geo Map * * @param array $query Query args. * @param array $options Options array. * @return string Output. */ function get_wpgeo_map($query, $options = null) { global $wpgeo, $wpgeo_map_id; $wpgeo_map_id++; $id = 'wpgeo_map_id_' . $wpgeo_map_id; $wp_geo_options = get_option('wp_geo_options'); $defaults = apply_filters('wpgeo_map_default_query_args', array('width' => $wp_geo_options['default_map_width'], 'height' => $wp_geo_options['default_map_height'], 'type' => $wp_geo_options['google_map_type'], 'polylines' => $wp_geo_options['show_polylines'], 'polyline_colour' => $wp_geo_options['polyline_colour'], 'zoom' => $wp_geo_options['default_map_zoom'], 'align' => 'none', 'numberposts' => -1, 'posts_per_page' => -1, 'post_type' => 'post', 'post_status' => 'publish', 'orderby' => 'post_date', 'order' => 'DESC', 'markers' => 'large', 'offset' => 0, 'category' => null, 'include' => null, 'exclude' => null, 'meta_key' => null, 'meta_value' => null, 'post_ids' => '', 'post_mime_type' => null, 'post_parent' => null)); // Validate Args $r = wp_parse_args($query, $defaults); $r['width'] = wpgeo_css_dimension($r['width']); $r['height'] = wpgeo_css_dimension($r['height']); if ($r['posts_per_page'] < $r['numberposts']) { $r['posts_per_page'] = $r['numberposts']; } // Set 'post__in' if 'post_ids' set, but don't overwrite. if (!empty($r['post_ids']) && empty($r['post__in'])) { if (is_array($r['post_ids'])) { $r['post__in'] = $r['post_ids']; } else { $r['post__in'] = explode(',', $r['post_ids']); } } $posts = get_posts($r); // Map $map = new WPGeo_Map('id_' . $wpgeo_map_id); $map->set_size($r['width'], $r['height']); $map->set_map_centre(new WPGeo_Coord($wp_geo_options['default_map_latitude'], $wp_geo_options['default_map_longitude'])); $map->set_map_zoom($r['zoom']); $map->set_map_type($r['type']); // Points if ($posts) { foreach ($posts as $post) { $coord = get_wpgeo_post_coord($post->ID); if ($coord->is_valid_coord()) { $marker = get_post_meta($post->ID, WPGEO_MARKER_META, true); if (empty($marker)) { $marker = $r['markers']; } $map->add_point($coord, array('icon' => apply_filters('wpgeo_marker_icon', $marker, $post, 'template'), 'title' => get_wpgeo_title($post->ID), 'link' => apply_filters('wpgeo_marker_link', get_permalink($post), $post), 'post' => $post)); } } } // Polylines if (count($map->points) > 0) { if ($r['polylines'] == 'Y') { $polyline = new WPGeo_Polyline(array('color' => $r['polyline_colour'])); foreach ($map->points as $point) { $polyline->add_coord($point->get_coord()); } $map->add_polyline($polyline); } } $center_coord = $map->get_map_centre(); $wpgeo->maps->add_map($map); return $map->get_map_html(array('styles' => array('float' => $r['align']))); }