Skip to main content

How to show shape file (.shp)(map) on map with shape file?

Show shape file (.shp)(map) on map with shape file

Include gasparesganga package in php code
https://gasparesganga.com/labs/php-shapefile/


<?php


// Register autoloader

require_once('vendor/gasparesganga/php-shapefile/src/Shapefile/ShapefileAutoloader.php');

Shapefile\ShapefileAutoloader::register();


// Import classes

use Shapefile\Shapefile;

use Shapefile\ShapefileException;

use Shapefile\ShapefileReader;

try {

    // Open Shapefile

    $Shapefile = new ShapefileReader('filepath/shapefile.shp');

    

   // $json_data = $Shapefile->fetchRecord()->getGeoJSON();

    $geoJsonArray = [];

    while ($Geometry = $Shapefile->fetchRecord()) {

        // Skip the record if marked as "deleted"

        if ($Geometry->isDeleted()) {

            continue;

        }

        

         // Print Geometry as an Array

/*         print_r($Geometry->getArray());

        

        // Print Geometry as WKT

        print_r($Geometry->getWKT());

        

        // Print Geometry as GeoJSON

        print_r($Geometry->getGeoJSON());

        

        // Print DBF data

        print_r($Geometry->getDataArray()); */

      $geoJsonArray[] = $Geometry->getGeoJSON();

    }


} catch (ShapefileException $e) {

    // Print detailed error information

    echo "Error Type: " . $e->getErrorType()

        . "\nMessage: " . $e->getMessage()

        . "\nDetails: " . $e->getDetails();

}


$geoJsonArray = json_encode($geoJsonArray);

?>



<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Map View</title>

    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />

</head>

<body>

    <div id="map" style="width: 100%; height: 500px;"></div>

    <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>

    <script>

        var map = L.map('map').setView([42.383, -93.305], 13); // Adjust the initial view


        // Add a base layer (OpenStreetMap)

        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {

            attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'

        }).addTo(map);


        // GeoJSON data

        var geoJsonData = "<?php echo $geoJsonArray; ?>";


        // Iterate through the array of GeoJSON strings and add them to the map

        geoJsonData.forEach(function(geoJsonString) {

            var geoJson = JSON.parse(geoJsonString);

            L.geoJSON(geoJson).addTo(map);

        });

    </script>

</body>

</html>


Comments

Popular posts from this blog

How to use inner html value or data in php from javascript(innerHTML)?

 use inner html value or data in php from javascript(innerHTML)? <html> <body> <p id="demo">use inner html value in php(innerhtml)</p> <script>   var jassi = document.getElementById("demo").innerHTML;   //document.write(jassi); </script> <?php $jassi = '<script>document.write(jassi);</script>'; echo $jassi; ?> </body> </html>

How to get store data from WCFM(Best Multi Vendor Marketplace) Plugin?

 Get store data from WCFM(Best Multi Vendor Marketplace) Plugin. global $WCFM, $WCFMmp, $wp, $WCFM_Query, $post; $store_id = ''; if ( isset( $attr['id'] ) && !empty( $attr['id'] ) ) { $store_id = absint($attr['id']); } if (  wcfm_is_store_page() ) { $wcfm_store_url = get_option( 'wcfm_store_url', 'store' ); $store_name = apply_filters( 'wcfmmp_store_query_var', get_query_var( $wcfm_store_url ) ); $store_id  = 0; if ( !empty( $store_name ) ) { $store_user = get_user_by( 'slug', $store_name ); } $store_id    = $store_user->ID; } $user_id = $store_id;  $vendor_data = get_user_meta( $user_id, 'wcfmmp_profile_settings', true ); $street_1 = $vendor_data['address']['street_1']; $street_2 = $vendor_data['address']['street_2']; $city     = $vendor_data['address']['city']; $zip      = $vendor_data['address']['zip&#

How to create login with phone number in woocommerce wordpress?

Create login with phone number in woocommerce wordpress. function wooc_extra_register_fields() {?>        <p class="form-row form-row-wide">        <label for="reg_billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?><span class="required">*</span></label>        <input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php esc_attr_e( $_POST['billing_phone'] ); ?>" />        </p>            <?php  }  add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields' );  function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) { if ( isset( $_POST['billing_phone'] ) ) {    $hasPhoneNumber= get_users('meta_value='.$_POST['billing_phone']);    if ( !empty($hasPhoneNumber)) {      $validation_er