{"id":3116,"date":"2012-06-26T17:24:45","date_gmt":"2012-06-26T08:24:45","guid":{"rendered":"https:\/\/y2tech.net\/blog\/?p=3116"},"modified":"2012-12-30T21:56:39","modified_gmt":"2012-12-30T12:56:39","slug":"overlaying_cj4_maps","status":"publish","type":"post","link":"https:\/\/y2tech.net\/blog\/computer\/webmap\/overlaying_cj4_maps-3116\/","title":{"rendered":"\u96fb\u5b50\u56fd\u571fV4\u3068Google Maps\u306e\u91cd\u306d\u5408\u308f\u305b"},"content":{"rendered":"<h3>\u96fb\u5b50\u56fd\u571fV4\u3068Google Maps\u3092\u540c\u3058Map\u30ad\u30e3\u30f3\u30d0\u30b9\u4e0a\u3067\u91cd\u306d\u5408\u308f\u305b\u3066\u307f\u305f<\/h3>\r\n<br>\r\n<div style=\"width: 680px; margin: 0 auto; text-align: center;\">\r\n<iframe src=\"https:\/\/y2tech.net\/CJMapTest\/sample.html\" width=666 height=550  border=0 ><\/iframe>\r\n<span><\/span>\r\n<\/div>\r\n<br>\r\n<p>\u96fb\u5b50\u56fd\u571fV4\u306e\u30c6\u30b9\u30c8\u30b7\u30b9\u30c6\u30e0\u304c7\u6708\u5f8c\u534a\u304b\u3089\u7a3c\u50cd\u3059\u308b\u4e88\u5b9a\u3067\u3059\u304c\u3001\u65b0\u3057\u3044\u96fb\u5b50\u56fd\u571fV4\u3067\u306f\u80cc\u666f\u5730\u56f3\u306e\u6295\u5f71\u65b9\u6cd5\u304cWEB\u30de\u30c3\u30d7\u306e\u4e16\u754c\u306e\u30c7\u30d5\u30a1\u30af\u30c8\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9\u3067\u3042\u308b\u3001<a href=\"http:\/\/docs.openlayers.org\/library\/spherical_mercator.html\" title=\"Spherical Mercator\" target=\"_blank\">&#8220;Spherical Mercator&#8221;<\/a> \u306b\u6e96\u62e0\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e<\/p>\r\n<br>\r\n<p>\u3053\u308c\u307e\u3067\u306e\u96fb\u5b50\u56fd\u571f\u30b7\u30b9\u30c6\u30e0\u306e\u80cc\u666f\u5730\u56f3\u306f\u7def\u5ea6\u306b\u3088\u308aY\u8ef8\u65b9\u5411\u306e\u89e3\u50cf\u5ea6\u304c\u7570\u306a\u3063\u3066\u3044\u305f\u306e\u3067\u3001OpenLayers\u306a\u3069\u306eWEB\u30de\u30c3\u30d7\u30b7\u30b9\u30c6\u30e0\u3084GIS\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u6271\u3046\u306e\u306f\u9762\u5012\u3067\u3057\u305f\u304c\u3001\u96fb\u5b50\u56fd\u571fV4\u30b7\u30b9\u30c6\u30e0\u3067\u914d\u4fe1\u3055\u308c\u308b\u5730\u56f3\u30c7\u30fc\u30bf\u306e\u5ea7\u6a19\u7cfb\u304cGoogle Maps\u3068\u540c\u3058\u306b\u306a\u308b\u306e\u3067\u3001\u4ed6\u306eWEB\u30de\u30c3\u30d7\u30b7\u30b9\u30c6\u30e0\u306e\u5730\u56f3\u30c7\u30fc\u30bf\u3068\u5bb9\u6613\u306b\u91cd\u306d\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e<\/p>\r\n<br>\r\n<p>\u5148\u306b\u516c\u958b\u3055\u308c\u305f\u96fb\u5b50\u56fd\u571fV4\u306e\u30c6\u30b9\u30c8\u30b5\u30a4\u30c8\u306e\u80cc\u666f\u5730\u56f3\u30c7\u30fc\u30bf\u3068Google Maps\u306e\u5730\u56f3\u30c7\u30fc\u30bf\u3092\u540c\u3058OpenLayers\u306e\u5730\u56f3\u30ad\u30e3\u30f3\u30d0\u30b9\u4e0a\u3067\u5207\u308a\u66ff\u3048\u308b\u30b5\u30f3\u30d7\u30eb\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\uff0e\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u5358\u7d14\u306b\u5404Layer\u3092\u5207\u308a\u66ff\u3048\u3066\u8868\u793a\u3057\u3066\u3044\u308b\u3060\u3051\u3067\u3059\u304c\u3001OpenLayers\u3092\u7528\u3044\u308c\u3070Layer\u6bce\u306b\u900f\u660e\u5ea6\u3092\u8a2d\u5b9a\u3057\u3066\u30aa\u30d0\u30fc\u30ec\u30a4\u8868\u793a\u3055\u305b\u308b\u4e8b\u3082\u7c21\u5358\u306b\u3067\u304d\u308b\u306f\u305a\u3067\u3059\uff0e\uff08<a href=\"https:\/\/y2tech.net\/blog\/computer\/webmap\/openlayers-tips-overlaid-layers-3309\/\" title=\"OpenLayers Tips: \u30aa\u30fc\u30d0\u30ec\u30a4\u8868\u793a\" target=\"_blank\">\u300eOpenLayers Tips: \u30aa\u30fc\u30d0\u30ec\u30a4\u8868\u793a\u300f<\/a>\uff09\r\n<br>\r<\/p>\r\n<hr \/>\r\n<h4>HTML\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/h4>\r\n<br>\r\n<pre><code class=\"language-Markup\">\r\n<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\"\r\n        \"http:\/\/www.w3.org\/TR\/html4\/strict.dtd\">\r\n<html lang=\"ja\">\r\n<head>\r\n\t<meta http-equiv=\"content-type\" content=\"text\/html; charset=utf-8\">\r\n\t<title>Web Map Samples [ CJ4, Google, Bing, OSM ]<\/title>\r\n\r\n<script type=\"text\/javascript\" src=\".\/OpenLayers-2.12\/OpenLayers.js\"><\/script>\r\n<script type=\"text\/javascript\" src=\".\/webtis_v4.js\" ><\/script>\r\n<script src=\"http:\/\/maps.google.co.jp\/maps\/api\/js?v=3.5&#038;sensor=false&#038;language=ja\"><\/script>\r\n\r\n<script type=\"text\/javascript\">\r\n\r\nvar CJ4LayerID = \"CJ4 Base Map\";\r\nvar CJLogo = null;\r\n\r\nfunction init_map(){\r\n\r\n\tvar map = new OpenLayers.Map( 'map_cj4' );\r\n\r\n\t\/\/ Denshikokudo Base Map\r\n\tvar cj4BaseMapSet = { 0: null, 1: null, 2: null, 3: null, 4: null,\r\n\t\t5:{dataId:\"RELIEF\"},\r\n\t\t6:{dataId:\"RELIEF\"},\r\n\t\t7:{dataId:\"RELIEF\"},\r\n\t\t8:{dataId:\"RELIEF\"},\r\n\t\t9:{dataId:\"BAFD1000K\"},\r\n\t\t10:{dataId:\"BAFD1000K\"},\r\n\t\t11:{dataId:\"BAFD1000K\"},\r\n\t\t12:{dataId:\"BAFD200K\"},\r\n\t\t13:{dataId:\"BAFD200K\"},\r\n\t\t14:{dataId:\"BAFD200K\"},\r\n\t\t15:{dataId:\"DJBMM\"},\r\n\t\t16:{dataId:\"DJBMM\"},\r\n\t\t17:{dataId:\"DJBMM\"},\r\n\t\t18:{dataId:\"FGD\"}\r\n\t};\r\n\r\n\tvar webtisLayer = new webtis.Layer.BaseMap( CJ4LayerID, { dataSet: cj4BaseMapSet });\r\n\t\r\n\t\/\/ Google Road Map\r\n\tvar googlemap = new OpenLayers.Layer.Google(\r\n\t\t\"Google ROADMAP\",\r\n\t\t{numZoomLevels: 20}\r\n\t);\r\n\r\n\t\/\/ Bing Road Map\r\n\tvar apiKey = \"#####  your own API key #####\";\r\n\tvar bingRoad = new OpenLayers.Layer.Bing({\r\n\t\tkey: apiKey,\r\n\t\ttype: \"Road\"\r\n\t});\r\n\r\n\t\/\/ Bing Hybrid Map\r\n\tvar bingHybrid = new OpenLayers.Layer.Bing({\r\n\t\tkey: apiKey,\r\n\t\ttype: \"AerialWithLabels\",\r\n\t\tname: \"Bing Aerial With Labels\"\r\n\t});\r\n\r\n\t\/\/ Open Street Map\r\n\tvar osm = new OpenLayers.Layer.OSM();\r\n\r\n\tmap.addLayers( [ webtisLayer, googlemap, bingRoad, bingHybrid, osm ] );\r\n\r\n\tvar zoomLevel = 16;\r\n\tvar centerLatLon = new OpenLayers.LonLat(138.72736528, 35.36062806);\r\n\tvar center = centerLatLon.transform( new OpenLayers.Projection(\"EPSG:4326\"), \r\n\t\t\t\t\t\t\t\t\t\t map.getProjectionObject() );\r\n\tmap.setCenter( center, zoomLevel );\r\n\r\n\t\/\/ add overlay features (random zigzagged line)\r\n\tvar vectorLayer = new OpenLayers.Layer.Vector(\"Overlay Features\");\r\n\r\n\tvar style_green = {\r\n\t\u3000\u3000strokeColor: \"#33DD33\",\r\n\t\u3000\u3000strokeOpacity: 0.7,\r\n\t\u3000\u3000strokeWidth: 4,\r\n\t\u3000\u3000pointRadius: 6,\r\n\t\u3000\u3000pointerEvents: \"visiblePainted\"\r\n\t};\r\n\r\n\tvar point = new OpenLayers.Geometry.Point( center.lon, center.lat );\r\n\tvar pointList = [];\r\n\tvar newPoint = point;\r\n\tfor( var i=0; i<15; ++i) {\r\n\t\tvar sx = Math.random(1) > 0.5 ? 1 : -1;\r\n\t\tvar sy = Math.random(1) > 0.5 ? 1 : -1;\r\n\t\tnewPoint = new OpenLayers.Geometry.Point( newPoint.x + Math.random(1) * 50 * sx,\r\n\t\t\t\t\t\t\t\t\t\t\t\t  newPoint.y + Math.random(1) * 50 * sy );\r\n\t\tpointList.push( newPoint );\r\n\t}\r\n\r\n\tvar lineFeature = new OpenLayers.Feature.Vector(\r\n\t\t\tnew OpenLayers.Geometry.LineString( pointList ), null, style_green );\r\n\r\n\tvectorLayer.addFeatures( [ lineFeature ] );\r\n\tmap.addLayer( vectorLayer );\r\n\r\n\tmap.addControl( new OpenLayers.Control.LayerSwitcher() );\r\n\r\n\tvar crosshairsCursorCtrl = new OpenLayers.Control.CrosshairsCursor({\r\n\t\t\t\t\ticonImageUrl:  \".\/crosshairs.png\",\r\n\t\t\t\t\ticonSize: new OpenLayers.Size(32, 32),\r\n\t\t\t\t\txyPos: new OpenLayers.Pixel( map.getCurrentSize().w \/ 2, \r\n\t\t\t\t\t\t\t\t\t\t\t\t map.getCurrentSize().h \/ 2 )\r\n\t\t\t});\r\n\tmap.addControl( crosshairsCursorCtrl ); \r\n\r\n\t\/\/ Logo\r\n\tCJLogo = new OpenLayers.Control.CJLogo();\r\n\t\/\/cjLogo.yOffset = 64;\r\n\t\/\/cjLogo.xOffset = 620;\r\n\tmap.addControl( CJLogo );\r\n\r\n\t\/\/ mouse position\r\n\tmap.addControl( new OpenLayers.Control.MousePosition( \r\n\t\t{ 'div': OpenLayers.Util.getElement('mouse_position'),\r\n\t\t  prefix: 'Mouse Position : ',\r\n\t\t  suffix: ' [Lon, Lat]',\r\n\t\t  displayProjection: new OpenLayers.Projection(\"EPSG:4326\"),\r\n\t\t  emptyString: 'Mouse Position : ',\t\t\r\n\t\t  numDigits: 6\r\n\t\t} ));\r\n\r\n\tmap.addControl( new OpenLayers.Control.MousePosition( \r\n\t\t{ 'div': OpenLayers.Util.getElement('mouse_position_m'),\r\n\t\t  prefix: '  ( ',\r\n\t\t  suffix: ' [m] )',\r\n\t\t  emptyString: '',\r\n\t\t  numDigits: 0\r\n\t\t} ));\r\n\r\n\t\/\/ draw a map scale bar\r\n\tmap.addControl( new OpenLayers.Control.ScaleLine( \r\n\t\t{ maxWidth:150,\r\n\t\t  bottomOutUnits: \"\", \r\n\t\t  bottomInUnits: \"\",\r\n\t\t  geodesic:true\r\n\t\t} ));\r\n\r\n\t\/\/ show map center location\r\n\tshow_map_center( map );\r\n\t\/\/ event handler\r\n\tmap.events.register( 'moveend', map, function() { show_map_center(map); } );\r\n\tmap.events.register( 'changebaselayer', map, function() { show_denshikokudo_logo(map); } );\r\n\r\n\r\n}\r\n\r\n\/\/ our custom crosshairs cursor\r\nOpenLayers.Control.CrosshairsCursor = OpenLayers.Class( OpenLayers.Control, {\r\n\telement : null,\r\n\ticonImageUrl: null,\r\n\ticonSize: new OpenLayers.Size(32,32),\r\n\txyPos: new OpenLayers.Pixel(320,240),\r\n\r\n\tinitialize: function( element ) {\r\n\t\tOpenLayers.Control.prototype.initialize.apply( this, arguments );\r\n\t\tthis.element = OpenLayers.Util.getElement( element );\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tOpenLayers.Control.prototype.draw.apply( this, arguments );\r\n\t\tvar xy = this.xyPos.clone();\r\n\t\tvar centerXYPos = new OpenLayers.Pixel( xy.x - (this.iconSize.w \/ 2), \r\n\t\t\t\t\t\t\t\t\t\t\t\txy.y - (this.iconSize.h \/ 2) );\r\n\t\tthis.buttons = new Array();\r\n\r\n\t\tvar uniqID = OpenLayers.Util.createUniqueID( \"OpenLayers.Control.Crosshairs_\" );\r\n\t\tthis.div = OpenLayers.Util.createAlphaImageDiv(\r\n\t\t\t\tuniqID, \r\n\t\t\t\tcenterXYPos, \r\n\t\t\t\tthis.iconSize, \r\n\t\t\t\tthis.iconImageUrl, \r\n\t\t\t\t\"absolute\");\r\n\t\treturn this.div;\r\n\t},\r\n\tCLASS_NAME: \"OpenLayers.Control.CrosshairsCursor\"\r\n});\r\n\r\nOpenLayers.Control.CJLogo = OpenLayers.Class( OpenLayers.Control, {\r\n\t\r\n\txOffset : 40,\r\n\tyOffset : 56,\r\n\t\r\n\tinitialize: function() {\r\n\t\tOpenLayers.Control.prototype.initialize.apply( this, arguments );\r\n\t},\r\n\t\r\n\tcreateCtrlImage: function( url, left, handler) {\r\n\t\r\n\t\tvar image = document.createElement('img');\r\n\t\timage.src = url;\r\n\t\timage.style.position = \"absolute\";\r\n\t\timage.style.left = left + \"px\";\r\n\t\timage.style.width  = '32px';\r\n\t\timage.style.height = '32px';\r\n\r\n\t\tif ( handler ) {\r\n\t\t\r\n\t\t\t\/\/ only handle click\r\n\t\t\tOpenLayers.Event.observe(image, \"mousedown\", \r\n\t\t\t\tOpenLayers.Function.bindAsEventListener( handler, this));\r\n\t\t\t\t\r\n\t\t\tOpenLayers.Event.observe(image, \"click\", \r\n\t\t\t\tOpenLayers.Function.bindAsEventListener( function(e) {\r\n\t\t\t\t\tOpenLayers.Event.stop(e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}, this));\r\n\t\t\t\t\r\n\t\t\tOpenLayers.Event.observe(image, \"dblclick\", \r\n\t\t\t\tOpenLayers.Function.bindAsEventListener(function(e) {\r\n\t\t\t\t\tOpenLayers.Event.stop(e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}, this));\r\n\t\t}\r\n\t\tthis.div.appendChild( image );\r\n\t},\r\n\t\r\n\tdraw: function (px) {\r\n\r\n\t\tif ( this.div == null ) {\r\n\r\n\t\t\tvar mapSize = this.map.getSize();\r\n\t\t\t\r\n\t\t\tthis.div = OpenLayers.Util.createDiv( this.id );\r\n\r\n\t\t\tthis.div.style.position = \"absolute\";\r\n\t\t\tthis.div.style.top  = ( mapSize.h - this.yOffset ) + \"px\";\r\n\t\t\tthis.div.style.left = ( mapSize.w - this.xOffset ) + \"px\";\r\n\r\n\t\t\tthis.createCtrlImage( \"http:\/\/cyberjapan.jp\/images\/icon01.gif\", 0, \r\n\t\t\t\tfunction(e) {\r\n\t\t\t\t\twindow.open( \"http:\/\/portal.cyberjapan.jp\/index.html\" );\r\n\t\t\t\t\tOpenLayers.Event.stop(e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\r\n\t\t}\r\n\t\treturn this.div;\r\n\t},\r\n\r\n\tadjustPositionOnMapResize: function() {\r\n\r\n\t\tif (this.div != null) {\r\n\t\t\tvar mapSize = this.map.getSize();\r\n\t\t\tthis.div.style.top  = ( mapSize.h - this.yOffset ) + \"px\";\r\n\t\t\tthis.div.style.left = ( mapSize.w - this.xOffset ) + \"px\";\r\n\t\t}\r\n\t},\r\n\t\r\n\tCLASS_NAME: \"webtis.Control.DenshiKokudoLinks\"\r\n});\r\n\r\n\r\nfunction show_map_center( map ) {\r\n\tvar center = map.getCenter();\r\n\tvar centerLatLon = center.transform( map.getProjectionObject(),\r\n\t\tnew OpenLayers.Projection(\"EPSG:4326\"));\r\n\tvar lat = Math.round(centerLatLon.lat * 1000000) \/ 1000000;\r\n\tvar lon = Math.round(centerLatLon.lon * 1000000) \/ 1000000;\r\n\tvar zoomLevel = map.getZoom();\r\n\t\r\n\tvar htmlText= \"Map Center: \" + lon + \", \" + lat + \"  Zoom Level: \"+ zoomLevel;\r\n\tdocument.getElementById('map_info').firstChild.nodeValue = htmlText;\r\n}\r\n\r\nfunction show_denshikokudo_logo( map ) {\r\n\r\n\tvar currentBaseLayerName = map.baseLayer.name;\r\n\r\n\tif ( currentBaseLayerName !== CJ4LayerID ) {\r\n\t\tif ( CJLogo ) map.removeControl( CJLogo );\r\n\t\tCJLogo = null;\r\n\t} else {\r\n\t\tCJLogo = new OpenLayers.Control.CJLogo();\r\n\t\tmap.addControl( CJLogo );\r\n\t}\r\n\r\n}\r\n\r\n<\/script>\r\n\r\n<style type=\"text\/css\">\r\n#map_cj4 {\r\n  width:  640px;\r\n  height: 480px;\r\n  border: solid 1px #999;\r\n}\r\n#map_info_area {\r\n  width:  640px;\r\n  height: 40px;\r\n  font-size: small;\r\n  border: solid 1px #999;\r\n}\r\n#map_scale {\r\n  float: right;\r\n  height: 40px;\r\n}\r\n#mouse_position {\r\n  float: left;\r\n  height: 20px;\r\n}\r\n#mouse_position_m {\r\n  margin-left: 0.5em;\r\n  float: left;\r\n  height: 20px;\r\n}\r\n#map_zoom {\r\n  float: left;\r\n  height: 20px;\r\n}\r\n#map_info {\r\n  display: block;\r\n  height: 18px;\r\n}\r\n\r\ndiv.olControlAttribution {\r\n  font-size: x-smaller;\r\n  right: 3px;\r\n  bottom: 0.2em;\r\n  position: absolute;\r\n  display: block;\r\n}\r\n\r\n<\/style>\r\n\r\n<\/head>\r\n<body onload=\"init_map()\">\r\n\t<div id=\"map_cj4\" ><\/div>\r\n\t<div id=\"map_info_area\" >\r\n\t\t<div id=\"layer_sw\" ><\/div>\r\n\t\t<div id=\"map_info\" >Map Center: <\/div>\r\n\t\t<div id=\"mouse_position\" ><\/div>\r\n\t\t<div id=\"mouse_position_m\" ><\/div>\r\n\t\t<div id=\"map_scale\" ><\/div>\r\n\t<\/div>\r\n<\/body>\r\n<\/html>\r\n<\/code><\/pre>\r\n\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"\u5148\u306b\u516c\u958b\u3055\u308c\u305f\u96fb\u5b50\u56fd\u571fV4\u306e\u30c6\u30b9\u30c8\u30b5\u30a4\u30c8\u306e\u80cc\u666f\u5730\u56f3\u30c7\u30fc\u30bf\u3068Google Maps\u306e\u5730\u56f3\u30c7\u30fc\u30bf\u3092\u540c\u3058OpenLayers\u306e\u5730\u56f3\u30ad\u30e3\u30f3\u30d0\u30b9\u4e0a\u3067\u5207\u308a\u66ff\u3048\u308b\u30b5\u30f3\u30d7\u30eb\u3092\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\uff0e","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[561],"tags":[564,318,508,563,500],"class_list":["post-3116","post","type-post","status-publish","format-standard","hentry","category-webmap","tag-epsg900913","tag-google-maps","tag-spherical-mercator","tag-563","tag-v4"],"_links":{"self":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts\/3116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/comments?post=3116"}],"version-history":[{"count":0,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/posts\/3116\/revisions"}],"wp:attachment":[{"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/media?parent=3116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/categories?post=3116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/y2tech.net\/blog\/wp-json\/wp\/v2\/tags?post=3116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}