您需要一些初始(可能是全局)jsvar markers_array = [];
. 然后使用ajax回调函数将标记插入到该数组中。
注册脚本
// Define
$root_url = plugin_dir_path(); // Example path
$ajax_nonce = \'your_nonce\';
$ajax_nonce_val = \'your_val\';
// Ajax
wp_register_script( \'json2\', false, false, false, true );
wp_enqueue_script( \'json2\' );
wp_enqueue_script(
\'ajax-script\'
,"{$root_url}js/ajax_json.js" // your ajax callback script that handles the request (inside a /js folder)
,array(
\'json2\'
)
,false
,true
);
wp_localize_script(
\'ajax-script\'
,\'ajax_object\' // YOUR MAIN DATA OBJECT
,array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
,$ajax_nonce => wp_create_nonce( $ajax_nonce_val )
)
);
初始标记
// inside some <script> part: You need the following php function to build your markers array:
// This js array will be used by your custom build markers js function to build the initial markers. It can also be used to update markers and overlays.
var mapsInitMarkers = <?php echo build_markers_array(); ?>;
// Markers builder callback function for init js-var
function build_markers_array()
{
$output = \'\';
$markers = array( /* DEFINE MARKERS HERE */ );
foreach ( $markers as $marker )
{
// id, lat, lng, name
$output .= "[
{$marker[\'ID\']},
{$marker[\'lat\']},
{$marker[\'lng\']},
\'{$marker[\'name\']}\',
],";
}
$output = substr( $output, 0, -1 ); // get rid of last comma
$output = "[{$output}]";
return $output;
}
Ajax回调函数
function ajax_cb_fn()
{
check_ajax_referer( \'referer_name\', $ajax_nonce ); // needed if performed some update via some ex. form
$output = \'\'; // do stuff here - example, use build_markers_array(); with some input to update your markers
$response = json_encode( array(
\'data\' => $output
) );
header( "Content-Type: application/json" );
echo $response;
exit();
}
ajax\\u json内部的数据处理。现在你可以写一些
document.ready()
函数在新的ajax json处理文件中。在那里,您可以通过
ajax_object
javascript对象。你可以使用
$.post()
通过表单或其他方式执行数据处理。你也可以把你的记号笔碰到一些
createMarkers
js函数,您也可以使用它来构建初始数组(您需要在某处处理标记创建)。
为什么不应将此数据添加为标记元素属性,标记由浏览器渲染,数据刚刚处理。试想一下,如果你把数百个lat/lng ATT放进去,你的div会是什么样子。在短时间内,您将需要放弃对设备浏览器和上网本笔记本电脑、平板电脑等的支持。