为什么我的Google Map Marker在安卓手机上无法点击?

这两天搞了一个查询大温地区公交信息的网页应用,用了Google Map的JavaScript API来显示用户附近1.5公里以内的公交车站,用户点击车站图标后会有infoWindow弹出来显示公交站详情。

说来有点讽刺,在电脑上、各种iPhone以及Windows Phone上测试都没问题,唯独在Google自家的安卓系统访问网页时,地图上的公交图标是无法点击的。网上搜了一下,最近一篇类似的求助文章发表在4年前。情况不同的是,当时有开发者反映,只有iOS设备在使用Google地图才会有无法点击的问题。我照着大家提供的方法把Marker设置成draggable后问题解决,但我还是不能忍受允许用户随意拖拽图标。

抓耳挠腮想寻求更好的解决办法时,无意中看到了自己网页中的js请求url是下面这种,

https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap

网上有的示例代码会在url中加”v=3.**”,而有的用了”v=2.**”,会不会是版本问题?

于是研究了下Google官方文档在不提供版本变量时,他们会默认提供最新非正式版本(目前是3.exp)。有问题的就是这个版本,我定义了v=3.23后问题解决。不用设置draggable也可以了。

如何自定义 custom post type 的permalink

在WordPress添加custom post type之后,默认的permanlink组织形式是

http://example.com/post-type/post-name

如果想改为

http://example.com/post-type/%post_id%

应该如何做?根据网上搜到的教程,下面这段代码(以post_type=”business”为例)帮我实现了想要的功能。把它放入主题文件夹的functions.php或者专门新建一个插件都可以。插件激活之后要去访问一下后台permalink的设置页,不然新的permalink链接会有“页面无法显示”的错误。

add_filter('post_type_link', 'ct_post_type_link', 1, 3);

function ct_post_type_link( $post_link, $post = 0 ){
    $post_type = $post->post_type;

    if ( $post_type == 'business' ) {
        return home_url( "/$post_type/" . $post->ID);
    }else {
        return $post_link;
    }
}

add_action( 'init', 'ct_rewrites_init' );
function ct_rewrites_init(){
    add_rewrite_rule(
        'business/([0-9]+)?$',
        'index.php?post_type=business&p=$matches[1]',
        'top' );
}